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    [from the cache]
©2003-2011 Jasper Spaans