lkml.org 
[lkml]   [2007]   [Oct]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 3/6][RFC] Move FIBMAP logic
    Move FIBMAP logic out of file_ioctl() in preparation for introducing FIBMAP64.

    Signed-off-by: Mike Waychison <mikew@google.com>
    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/

    \
     
     \ /
      Last update: 2007-10-27 01:43    [W:0.020 / U:0.400 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site