Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
ead083ae
Commit
ead083ae
authored
Apr 18, 2024
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
set_blocksize(): switch to passing struct file *
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
b85c4298
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
28 additions
and
23 deletions
+28
-23
block/bdev.c
block/bdev.c
+7
-4
block/ioctl.c
block/ioctl.c
+12
-9
drivers/block/pktcdvd.c
drivers/block/pktcdvd.c
+1
-1
fs/btrfs/dev-replace.c
fs/btrfs/dev-replace.c
+1
-1
fs/btrfs/volumes.c
fs/btrfs/volumes.c
+2
-2
fs/ext4/super.c
fs/ext4/super.c
+1
-1
fs/reiserfs/journal.c
fs/reiserfs/journal.c
+2
-3
fs/xfs/xfs_buf.c
fs/xfs/xfs_buf.c
+1
-1
include/linux/blkdev.h
include/linux/blkdev.h
+1
-1
No files found.
block/bdev.c
View file @
ead083ae
...
...
@@ -144,8 +144,11 @@ static void set_init_blocksize(struct block_device *bdev)
bdev
->
bd_inode
->
i_blkbits
=
blksize_bits
(
bsize
);
}
int
set_blocksize
(
struct
block_device
*
bdev
,
int
size
)
int
set_blocksize
(
struct
file
*
file
,
int
size
)
{
struct
inode
*
inode
=
file
->
f_mapping
->
host
;
struct
block_device
*
bdev
=
I_BDEV
(
inode
);
/* Size must be a power of two, and between 512 and PAGE_SIZE */
if
(
size
>
PAGE_SIZE
||
size
<
512
||
!
is_power_of_2
(
size
))
return
-
EINVAL
;
...
...
@@ -155,9 +158,9 @@ int set_blocksize(struct block_device *bdev, int size)
return
-
EINVAL
;
/* Don't change the size if it is same as current */
if
(
bdev
->
bd_
inode
->
i_blkbits
!=
blksize_bits
(
size
))
{
if
(
inode
->
i_blkbits
!=
blksize_bits
(
size
))
{
sync_blockdev
(
bdev
);
bdev
->
bd_
inode
->
i_blkbits
=
blksize_bits
(
size
);
inode
->
i_blkbits
=
blksize_bits
(
size
);
kill_bdev
(
bdev
);
}
return
0
;
...
...
@@ -167,7 +170,7 @@ EXPORT_SYMBOL(set_blocksize);
int
sb_set_blocksize
(
struct
super_block
*
sb
,
int
size
)
{
if
(
set_blocksize
(
sb
->
s_bdev
,
size
))
if
(
set_blocksize
(
sb
->
s_bdev
_file
,
size
))
return
0
;
/* If we get here, we know size is power of two
* and it's value is between 512 and PAGE_SIZE */
...
...
block/ioctl.c
View file @
ead083ae
...
...
@@ -473,11 +473,14 @@ static int compat_hdio_getgeo(struct block_device *bdev,
#endif
/* set the logical block size */
static
int
blkdev_bszset
(
struct
block_device
*
bdev
,
blk_mode_t
mode
,
static
int
blkdev_bszset
(
struct
file
*
file
,
blk_mode_t
mode
,
int
__user
*
argp
)
{
// this one might be file_inode(file)->i_rdev - a rare valid
// use of file_inode() for those.
dev_t
dev
=
I_BDEV
(
file
->
f_mapping
->
host
)
->
bd_dev
;
struct
file
*
excl_file
;
int
ret
,
n
;
struct
file
*
file
;
if
(
!
capable
(
CAP_SYS_ADMIN
))
return
-
EACCES
;
...
...
@@ -487,13 +490,13 @@ static int blkdev_bszset(struct block_device *bdev, blk_mode_t mode,
return
-
EFAULT
;
if
(
mode
&
BLK_OPEN_EXCL
)
return
set_blocksize
(
bdev
,
n
);
return
set_blocksize
(
file
,
n
);
file
=
bdev_file_open_by_dev
(
bdev
->
bd_dev
,
mode
,
&
b
dev
,
NULL
);
if
(
IS_ERR
(
file
))
excl_file
=
bdev_file_open_by_dev
(
dev
,
mode
,
&
dev
,
NULL
);
if
(
IS_ERR
(
excl_
file
))
return
-
EBUSY
;
ret
=
set_blocksize
(
bdev
,
n
);
fput
(
file
);
ret
=
set_blocksize
(
excl_file
,
n
);
fput
(
excl_
file
);
return
ret
;
}
...
...
@@ -621,7 +624,7 @@ long blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
case
BLKBSZGET
:
/* get block device soft block size (cf. BLKSSZGET) */
return
put_int
(
argp
,
block_size
(
bdev
));
case
BLKBSZSET
:
return
blkdev_bszset
(
bdev
,
mode
,
argp
);
return
blkdev_bszset
(
file
,
mode
,
argp
);
case
BLKGETSIZE64
:
return
put_u64
(
argp
,
bdev_nr_bytes
(
bdev
));
...
...
@@ -681,7 +684,7 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
case
BLKBSZGET_32
:
/* get the logical block size (cf. BLKSSZGET) */
return
put_int
(
argp
,
bdev_logical_block_size
(
bdev
));
case
BLKBSZSET_32
:
return
blkdev_bszset
(
bdev
,
mode
,
argp
);
return
blkdev_bszset
(
file
,
mode
,
argp
);
case
BLKGETSIZE64_32
:
return
put_u64
(
argp
,
bdev_nr_bytes
(
bdev
));
...
...
drivers/block/pktcdvd.c
View file @
ead083ae
...
...
@@ -2215,7 +2215,7 @@ static int pkt_open_dev(struct pktcdvd_device *pd, bool write)
}
dev_info
(
ddev
,
"%lukB available on disc
\n
"
,
lba
<<
1
);
}
set_blocksize
(
file_bdev
(
bdev_file
)
,
CD_FRAMESIZE
);
set_blocksize
(
bdev_file
,
CD_FRAMESIZE
);
return
0
;
...
...
fs/btrfs/dev-replace.c
View file @
ead083ae
...
...
@@ -316,7 +316,7 @@ static int btrfs_init_dev_replace_tgtdev(struct btrfs_fs_info *fs_info,
set_bit
(
BTRFS_DEV_STATE_IN_FS_METADATA
,
&
device
->
dev_state
);
set_bit
(
BTRFS_DEV_STATE_REPLACE_TGT
,
&
device
->
dev_state
);
device
->
dev_stats_valid
=
1
;
set_blocksize
(
device
->
bdev
,
BTRFS_BDEV_BLOCKSIZE
);
set_blocksize
(
bdev_file
,
BTRFS_BDEV_BLOCKSIZE
);
device
->
fs_devices
=
fs_devices
;
ret
=
btrfs_get_dev_zone_info
(
device
,
false
);
...
...
fs/btrfs/volumes.c
View file @
ead083ae
...
...
@@ -483,7 +483,7 @@ btrfs_get_bdev_and_sb(const char *device_path, blk_mode_t flags, void *holder,
if
(
flush
)
sync_blockdev
(
bdev
);
if
(
holder
)
{
ret
=
set_blocksize
(
bdev
,
BTRFS_BDEV_BLOCKSIZE
);
ret
=
set_blocksize
(
*
bdev_file
,
BTRFS_BDEV_BLOCKSIZE
);
if
(
ret
)
{
fput
(
*
bdev_file
);
goto
error
;
...
...
@@ -2717,7 +2717,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
set_bit
(
BTRFS_DEV_STATE_IN_FS_METADATA
,
&
device
->
dev_state
);
clear_bit
(
BTRFS_DEV_STATE_REPLACE_TGT
,
&
device
->
dev_state
);
device
->
dev_stats_valid
=
1
;
set_blocksize
(
device
->
bdev
,
BTRFS_BDEV_BLOCKSIZE
);
set_blocksize
(
device
->
bdev
_file
,
BTRFS_BDEV_BLOCKSIZE
);
if
(
seeding_dev
)
{
btrfs_clear_sb_rdonly
(
sb
);
...
...
fs/ext4/super.c
View file @
ead083ae
...
...
@@ -5873,7 +5873,7 @@ static struct file *ext4_get_journal_blkdev(struct super_block *sb,
sb_block
=
EXT4_MIN_BLOCK_SIZE
/
blocksize
;
offset
=
EXT4_MIN_BLOCK_SIZE
%
blocksize
;
set_blocksize
(
bdev
,
blocksize
);
set_blocksize
(
bdev
_file
,
blocksize
);
bh
=
__bread
(
bdev
,
sb_block
,
blocksize
);
if
(
!
bh
)
{
ext4_msg
(
sb
,
KERN_ERR
,
"couldn't read superblock of "
...
...
fs/reiserfs/journal.c
View file @
ead083ae
...
...
@@ -2626,8 +2626,7 @@ static int journal_init_dev(struct super_block *super,
MAJOR
(
jdev
),
MINOR
(
jdev
),
result
);
return
result
;
}
else
if
(
jdev
!=
super
->
s_dev
)
set_blocksize
(
file_bdev
(
journal
->
j_bdev_file
),
super
->
s_blocksize
);
set_blocksize
(
journal
->
j_bdev_file
,
super
->
s_blocksize
);
return
0
;
}
...
...
@@ -2643,7 +2642,7 @@ static int journal_init_dev(struct super_block *super,
return
result
;
}
set_blocksize
(
file_bdev
(
journal
->
j_bdev_file
)
,
super
->
s_blocksize
);
set_blocksize
(
journal
->
j_bdev_file
,
super
->
s_blocksize
);
reiserfs_info
(
super
,
"journal_init_dev: journal device: %pg
\n
"
,
file_bdev
(
journal
->
j_bdev_file
));
...
...
fs/xfs/xfs_buf.c
View file @
ead083ae
...
...
@@ -2043,7 +2043,7 @@ xfs_setsize_buftarg(
btp
->
bt_meta_sectorsize
=
sectorsize
;
btp
->
bt_meta_sectormask
=
sectorsize
-
1
;
if
(
set_blocksize
(
btp
->
bt_bdev
,
sectorsize
))
{
if
(
set_blocksize
(
btp
->
bt_bdev
_file
,
sectorsize
))
{
xfs_warn
(
btp
->
bt_mount
,
"Cannot set_blocksize to %u on device %pg"
,
sectorsize
,
btp
->
bt_bdev
);
...
...
include/linux/blkdev.h
View file @
ead083ae
...
...
@@ -1474,7 +1474,7 @@ static inline void bio_end_io_acct(struct bio *bio, unsigned long start_time)
}
int
bdev_read_only
(
struct
block_device
*
bdev
);
int
set_blocksize
(
struct
block_device
*
bdev
,
int
size
);
int
set_blocksize
(
struct
file
*
file
,
int
size
);
int
lookup_bdev
(
const
char
*
pathname
,
dev_t
*
dev
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment