Skip to contentSkip to conversation

use struct kvec in struct uio

PATCH In review Christoph Hellwig 2 participants 3 messages Nov 29, 2006 – Feb 7, 2007 XFS filesystem

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 use struct kvec in struct uio

All but one useage of struct uio are for kernel pointers, so let's use struct kvec instead of struct iovec. Because readlink by handle still uses it with a user pointer we still have two sparse warnings, but the noise level is reduced quite a bit by this.

fs/xfs/support/move.h +2 -2
Index: linux-2.6/fs/xfs/support/move.h
===================================================================
@@ -55,7 +55,7 @@
 };
 
 struct uio {
-	struct iovec	*uio_iov;   /* pointer to array of iovecs */
+	struct kvec	*uio_iov;   /* pointer to array of iovecs */
 	int		uio_iovcnt; /* number of iovecs in array */
 	xfs_off_t	uio_offset; /* offset in file this uio corresponds to */
 	int		uio_resid;  /* residual i/o count */
@@ -63,7 +63,7 @@
 };
 
 typedef struct uio uio_t;
-typedef struct iovec iovec_t;
+typedef struct kvec iovec_t;
 
 extern int	xfs_uio_read (caddr_t, size_t, uio_t *);
 
fs/xfs/linux-2.6/xfs_ioctl.c +1 -1
Index: linux-2.6/fs/xfs/linux-2.6/xfs_ioctl.c
===================================================================
@@ -388,7 +388,7 @@
 	aiov.iov_len	= olen;
 	aiov.iov_base	= hreq.ohandle;
 
-	auio.uio_iov	= &aiov;
+	auio.uio_iov	= (struct kvec *)&aiov;
 	auio.uio_iovcnt	= 1;
 	auio.uio_offset	= 0;
 	auio.uio_segflg	= UIO_USERSPACE;
#1 lore raw
Quoted 4 lines · Christoph Hellwig

All but one useage of struct uio are for kernel pointers, so let's use struct kvec instead of struct iovec. Because readlink by handle still uses it with a user pointer we still have two sparse warnings, but the noise level is reduced quite a bit by this.

ping?

Quoted 31 lines

Index: linux-2.6/fs/xfs/support/move.h
===================================================================

fs/xfs/support/move.h +2 -2
@@ -55,7 +55,7 @@
 };
 
 struct uio {
-	struct iovec	*uio_iov;   /* pointer to array of iovecs */
+	struct kvec	*uio_iov;   /* pointer to array of iovecs */
 	int		uio_iovcnt; /* number of iovecs in array */
 	xfs_off_t	uio_offset; /* offset in file this uio corresponds to */
 	int		uio_resid;  /* residual i/o count */
@@ -63,7 +63,7 @@
 };
 
 typedef struct uio uio_t;
-typedef struct iovec iovec_t;
+typedef struct kvec iovec_t;
 
 extern int	xfs_uio_read (caddr_t, size_t, uio_t *);
 

Index: linux-2.6/fs/xfs/linux-2.6/xfs_ioctl.c
===================================================================

fs/xfs/linux-2.6/xfs_ioctl.c line 394

Quoted 8 lines
fs/xfs/linux-2.6/xfs_ioctl.c +1 -1
@@ -388,7 +388,7 @@
 	aiov.iov_len	= olen;
 	aiov.iov_base	= hreq.ohandle;
 
-	auio.uio_iov	= &aiov;
+	auio.uio_iov	= (struct kvec *)&aiov;
 	auio.uio_iovcnt	= 1;
 	auio.uio_offset	= 0;
 	auio.uio_segflg	= UIO_USERSPACE;

---end quoted text---

#2 lore raw

Christoph,

Looks like another lost take message to oss.

mod xfs-linux-melb:xfs-kern:27701a TAKE message
================================================
Subject: TAKE 954580 -

use struct kvec in struct uio

Date:  Tue Dec 12 13:13:14 AEDT 2006
Workarea:  vpn-emea-sw-emea-160-4.emea.sgi.com:/home/lachlan/isms/2.6.x-xfs
Inspected by:  hch
Author:  lachlan

The following file(s) were checked into:
longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb

Modid: xfs-linux-melb:xfs-kern:27701a
fs/xfs/support/move.h - 1.19 - changed
fs/xfs/linux-2.6/xfs_ioctl.c - 1.140 - changed
fs/xfs/dmapi/xfs_dm.c - 1.31 - changed
- use struct kvec in struct uio

I also included this change to fix a warning introduced with your patch.

*** /usr/tmp/TmpDir.8968-0/fs/xfs/dmapi/xfs_dm.c_1.30 2007-02-07 18:00:52.000000000 +0000
--- /usr/tmp/TmpDir.8968-0/fs/xfs/dmapi/xfs_dm.c_1.31 2007-02-07 18:00:52.000000000 +0000
***************
*** 928,934 ****

  {
        int             sink;
        struct uio      auio;
!       struct iovec    aiov;
        int             rval;

        *nreadp = 0;
--- 928,934 ----
  {
        int             sink;
        struct uio      auio;
!       iovec_t         aiov;
        int             rval;

        *nreadp = 0;

Lachlan

Quoted 53 lines · Christoph Hellwig
Quoted 4 lines · Christoph Hellwig

All but one useage of struct uio are for kernel pointers, so let's use struct kvec instead of struct iovec. Because readlink by handle still uses it with a user pointer we still have two sparse warnings, but the noise level is reduced quite a bit by this.

ping?

Quoted 30 lines

Index: linux-2.6/fs/xfs/support/move.h
===================================================================

fs/xfs/support/move.h +2 -2
@@ -55,7 +55,7 @@
 };
 
 struct uio {
-	struct iovec	*uio_iov;   /* pointer to array of iovecs */
+	struct kvec	*uio_iov;   /* pointer to array of iovecs */
 	int		uio_iovcnt; /* number of iovecs in array */
 	xfs_off_t	uio_offset; /* offset in file this uio corresponds to */
 	int		uio_resid;  /* residual i/o count */
@@ -63,7 +63,7 @@
 };
 
 typedef struct uio uio_t;
-typedef struct iovec iovec_t;
+typedef struct kvec iovec_t;
 
 extern int	xfs_uio_read (caddr_t, size_t, uio_t *);
 

Index: linux-2.6/fs/xfs/linux-2.6/xfs_ioctl.c
===================================================================

fs/xfs/linux-2.6/xfs_ioctl.c line 394

Quoted 8 lines
fs/xfs/linux-2.6/xfs_ioctl.c +1 -1
@@ -388,7 +388,7 @@
 	aiov.iov_len	= olen;
 	aiov.iov_base	= hreq.ohandle;
 
-	auio.uio_iov	= &aiov;
+	auio.uio_iov	= (struct kvec *)&aiov;
 	auio.uio_iovcnt	= 1;
 	auio.uio_offset	= 0;
 	auio.uio_segflg	= UIO_USERSPACE;

---end quoted text---