Move FIBMAP logic out of file_ioctl() in preparation for introducing FIBMAP64. Signed-off-by: Mike Waychison fs/ioctl.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) Index: linux-2.6.23/fs/ioctl.c =================================================================== --- linux-2.6.23.orig/fs/ioctl.c 2007-10-26 15:26:11.000000000 -0700 +++ linux-2.6.23/fs/ioctl.c 2007-10-26 16:16:28.000000000 -0700 @@ -40,6 +40,21 @@ static long do_ioctl(struct file *filp, return error; } +static int do_fibmap(struct address_space *mapping, sector_t block, + sector_t *phys_block) +{ + if (!capable(CAP_SYS_RAWIO)) + return -EPERM; + if (!mapping->a_ops->bmap) + return -EINVAL; + + lock_kernel(); + *phys_block = mapping->a_ops->bmap(mapping, block); + unlock_kernel(); + + return 0; +} + static int file_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { @@ -55,18 +70,14 @@ static int file_ioctl(struct file *filp, sector_t phys_block; int res; /* do we support this mess? */ - if (!mapping->a_ops->bmap) - return -EINVAL; - if (!capable(CAP_SYS_RAWIO)) - return -EPERM; if ((error = get_user(block, p)) != 0) return error; if (block < 0) return -EINVAL; - lock_kernel(); - phys_block = mapping->a_ops->bmap(mapping, block); - unlock_kernel(); + error = do_fibmap(mapping, block, &phys_block); + if (error) + return error; /* Make sure that the return value fits in the * user's buffer. */ -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/