rpms/kernel/F-12 linux-2.6.31-inline.patch, NONE, 1.1.2.1 pnfs-all-2.6.32.patch, NONE, 1.1.2.1 config-generic, 1.344, 1.344.2.1 kernel.spec, 1.2050, 1.2050.2.1

Steve Dickson steved at fedoraproject.org
Wed Mar 24 20:55:46 UTC 2010


Author: steved

Update of /cvs/pkgs/rpms/kernel/F-12
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv10174

Modified Files:
      Tag: kernel-2_6_32_90-pnfs
	config-generic kernel.spec 
Added Files:
      Tag: kernel-2_6_32_90-pnfs
	linux-2.6.31-inline.patch pnfs-all-2.6.32.patch 
Log Message:
Added in the differences from the pnfs-all-2.6.32 branch
(git diff 8acb9f11^..HEAD)


linux-2.6.31-inline.patch:
 Makefile |    1 +
 1 file changed, 1 insertion(+)

--- NEW FILE linux-2.6.31-inline.patch ---
diff -up linux-2.6.31.noarch/arch/x86/Makefile.orig linux-2.6.31.noarch/arch/x86/Makefile
--- linux-2.6.31.noarch/arch/x86/Makefile.orig	2009-12-19 09:37:41.389204034 -0500
+++ linux-2.6.31.noarch/arch/x86/Makefile	2009-12-19 09:38:29.321329106 -0500
@@ -79,6 +79,7 @@ ifdef CONFIG_CC_STACKPROTECTOR
                 $(warning stack protector enabled but no compiler support)
         endif
 endif
+KBUILD_CFLAGS += -fno-inline-functions-called-once
 
 # Don't unroll struct assignments with kmemcheck enabled
 ifeq ($(CONFIG_KMEMCHECK),y)

pnfs-all-2.6.32.patch:
 Documentation/filesystems/nfs41-server.txt |    7 
 Documentation/filesystems/spnfs.txt        |  211 ++
 drivers/md/dm-ioctl.c                      |   24 
 drivers/scsi/hosts.c                       |    3 
 drivers/scsi/osd/osd_initiator.c           |   22 
 drivers/scsi/osd/osd_uld.c                 |   66 
 fs/Kconfig                                 |   18 
 fs/exofs/Kbuild                            |    1 
 fs/exofs/common.h                          |   80 -
 fs/exofs/exofs.h                           |  101 +
 fs/exofs/export.c                          |  436 +++++
 fs/exofs/inode.c                           |  321 ++--
 fs/exofs/osd.c                             |  542 ++++++
 fs/exofs/super.c                           |  286 ++-
 fs/exportfs/Makefile                       |    4 
 fs/exportfs/expfs.c                        |    7 
 fs/exportfs/nfs4blocklayoutxdr.c           |  166 ++
 fs/exportfs/nfs4filelayoutxdr.c            |  224 ++
 fs/gfs2/ops_fstype.c                       |    4 
 fs/nfs/Kconfig                             |   38 
 fs/nfs/Makefile                            |    7 
 fs/nfs/blocklayout/Makefile                |    6 
 fs/nfs/blocklayout/blocklayout.c           | 1196 +++++++++++++++
 fs/nfs/blocklayout/blocklayout.h           |  276 +++
 fs/nfs/blocklayout/blocklayoutdev.c        |  738 +++++++++
 fs/nfs/blocklayout/blocklayoutdm.c         |  337 ++++
 fs/nfs/blocklayout/extents.c               |  954 ++++++++++++
 fs/nfs/callback.h                          |   36 
 fs/nfs/callback_proc.c                     |  276 +++
 fs/nfs/callback_xdr.c                      |  155 +
 fs/nfs/client.c                            |   25 
 fs/nfs/direct.c                            |  230 ++
 fs/nfs/file.c                              |   48 
 fs/nfs/inode.c                             |   77 
 fs/nfs/internal.h                          |   32 
 fs/nfs/nfs3proc.c                          |    1 
 fs/nfs/nfs4_fs.h                           |   16 
 fs/nfs/nfs4filelayout.c                    |  859 ++++++++++
 fs/nfs/nfs4filelayout.h                    |  131 +
 fs/nfs/nfs4filelayoutdev.c                 |  897 +++++++++++
 fs/nfs/nfs4proc.c                          |  728 ++++++++-
 fs/nfs/nfs4renewd.c                        |    2 
 fs/nfs/nfs4state.c                         |   37 
 fs/nfs/nfs4xdr.c                           |  984 ++++++++++++
 fs/nfs/objlayout/Kbuild                    |   11 
 fs/nfs/objlayout/objio_osd.c               |  874 +++++++++++
 fs/nfs/objlayout/objlayout.c               |  785 +++++++++
 fs/nfs/objlayout/objlayout.h               |  168 ++
 fs/nfs/objlayout/panfs_shim.c              |  727 +++++++++
 fs/nfs/objlayout/panfs_shim.h              |  480 ++++++
 fs/nfs/objlayout/pnfs_osd_xdr.h            |  433 +++++
 fs/nfs/objlayout/pnfs_osd_xdr_cli.c        |  431 +++++
 fs/nfs/objlayout/pnfs_osd_xdr_srv.c        |  292 +++
 fs/nfs/pagelist.c                          |   13 
 fs/nfs/pnfs.c                              | 2302 +++++++++++++++++++++++++++++
 fs/nfs/pnfs.h                              |  368 ++++
 fs/nfs/proc.c                              |    1 
 fs/nfs/read.c                              |  109 -
 fs/nfs/super.c                             |   69 
 fs/nfs/write.c                             |  225 ++
 fs/nfsd/Kconfig                            |   49 
 fs/nfsd/Makefile                           |    4 
 fs/nfsd/bl_com.c                           |  290 +++
 fs/nfsd/bl_ops.c                           | 1673 +++++++++++++++++++++
 fs/nfsd/export.c                           |  107 +
 fs/nfsd/nfs4callback.c                     |  396 ++++
 fs/nfsd/nfs4pnfsd.c                        | 1533 +++++++++++++++++++
 fs/nfsd/nfs4pnfsdlm.c                      |  397 +++++
 fs/nfsd/nfs4pnfsds.c                       |  618 +++++++
 fs/nfsd/nfs4proc.c                         |  423 +++++
 fs/nfsd/nfs4state.c                        |  265 ++-
 fs/nfsd/nfs4xdr.c                          |  537 ++++++
 fs/nfsd/nfsctl.c                           |  105 +
 fs/nfsd/nfsfh.c                            |   11 
 fs/nfsd/nfssvc.c                           |    2 
 fs/nfsd/pnfsd.h                            |  137 +
 fs/nfsd/pnfsd_lexp.c                       |  232 ++
 fs/nfsd/spnfs_com.c                        |  550 ++++++
 fs/nfsd/spnfs_ops.c                        |  881 +++++++++++
 fs/nfsd/vfs.c                              |   73 
 include/linux/exp_xdr.h                    |  141 +
 include/linux/exportfs.h                   |   59 
 include/linux/fs.h                         |    2 
 include/linux/nfs4.h                       |   53 
 include/linux/nfs4_pnfs.h                  |  318 ++++
 include/linux/nfs_fs.h                     |   40 
 include/linux/nfs_fs_sb.h                  |   22 
 include/linux/nfs_iostat.h                 |    3 
 include/linux/nfs_page.h                   |   10 
 include/linux/nfs_xdr.h                    |   45 
 include/linux/nfsd/debug.h                 |    2 
 include/linux/nfsd/export.h                |    1 
 include/linux/nfsd/nfs4layoutxdr.h         |  131 +
 include/linux/nfsd/nfs4pnfsdlm.h           |   57 
 include/linux/nfsd/nfsd.h                  |    8 
 include/linux/nfsd/nfsd4_pnfs.h            |  293 +++
 include/linux/nfsd/nfsfh.h                 |    1 
 include/linux/nfsd/state.h                 |   88 +
 include/linux/nfsd/syscall.h               |    8 
 include/linux/nfsd/xdr4.h                  |   55 
 include/linux/nfsd4_block.h                |  102 +
 include/linux/nfsd4_spnfs.h                |  346 ++++
 include/linux/panfs_shim_api.h             |   57 
 include/linux/pnfs_xdr.h                   |  144 +
 include/linux/sunrpc/svc_xprt.h            |   37 
 include/linux/sunrpc/xdr.h                 |    8 
 include/scsi/osd_initiator.h               |   54 
 include/scsi/osd_sense.h                   |    3 
 net/sunrpc/backchannel_rqst.c              |    2 
 net/sunrpc/xdr.c                           |   35 
 110 files changed, 27623 insertions(+), 682 deletions(-)

--- NEW FILE pnfs-all-2.6.32.patch ---
diff -up linux-2.6.32.noarch/Documentation/filesystems/nfs41-server.txt.orig linux-2.6.32.noarch/Documentation/filesystems/nfs41-server.txt
--- linux-2.6.32.noarch/Documentation/filesystems/nfs41-server.txt.orig	2009-12-02 22:51:21.000000000 -0500
+++ linux-2.6.32.noarch/Documentation/filesystems/nfs41-server.txt	2010-03-23 14:54:38.320809000 -0400
@@ -213,3 +213,10 @@ The following cases aren't supported yet
   DESTROY_CLIENTID, DESTROY_SESSION, EXCHANGE_ID.
 * DESTROY_SESSION MUST be the final operation in the COMPOUND request.
 
+Nonstandard compound limitations:
+* No support for a sessions fore channel RPC compound that requires both a
+  ca_maxrequestsize request and a ca_maxresponsesize reply, so we may
+  fail to live up to the promise we made in CREATE_SESSION fore channel
+  negotiation.
+* No more than one IO operation (read, write, readdir) allowed per
+  compound.
diff -up linux-2.6.32.noarch/Documentation/filesystems/spnfs.txt.orig linux-2.6.32.noarch/Documentation/filesystems/spnfs.txt
--- linux-2.6.32.noarch/Documentation/filesystems/spnfs.txt.orig	2010-03-23 14:54:38.326810000 -0400
+++ linux-2.6.32.noarch/Documentation/filesystems/spnfs.txt	2010-03-23 14:54:38.329809000 -0400
@@ -0,0 +1,211 @@
+(c) 2007 Network Appliance Inc.
+
+spNFS
+-----
+
+An spNFS system consists of a Meta Data Server (MDS), a number of Client machines (C) and a number of Data Servers (DS).
+
+A file system is mounted by the clients from the MDS, and all file data
+is striped across the DSs.
+
+Identify the machines that will be filling each of these roles.
+
+The spnfs kernel will be installed on all machines: clients, the MDS and DSs.
+
+
+Building and installing the spNFS kernel
+----------------------------------------
+
+Get the spNFS kernel from:
+
+	git://linux-nfs.org/~bhalevy/linux-pnfs.git
+
+Use the pnfs-all-latest branch and add these options to your .config file
+
+	CONFIG_NETWORK_FILESYSTEMS=y
+	CONFIG_NFS_FS=m
+	CONFIG_NFS_V4=y
+	CONFIG_NFS_V4_1=y
+	CONFIG_PNFS=y
+	CONFIG_NFSD=m
+	CONFIG_PNFSD=y
+	# CONFIG_PNFSD_LOCAL_EXPORT is not set
+	CONFIG_SPNFS=y
+
+By default, spNFS uses whole-file layouts.  Layout segments can be enabled
+by adding:
+
+	CONFIG_SPNFS_LAYOUTSEGMENTS=y
+
+to your .config file.
+
+Building and installation of kernel+modules is as usual.
+This kernel should be installed and booted on the client, MDS and DSs.
+
+Note that CONFIG_PNFSD_LOCAL_EXPORT must be disabled for spnfs as it
+takes over the pnfs export interface.
+
+Building nfs-utils
+------------------
+
+Get the nfs-utils package containing spnfsd from:
+
+	git://linux-nfs.org/~bhalevy/pnfs-nfs-utils.git
+
+Follow the standard instructions for building nfs-utils.
+
+After building, the spnfsd daemon will be located in utils/spnfsd.  The spnfsd
+daemon will only be needed on the MDS.
+
+
+Installation
+------------
+
+The nfs-utils package contains a default spnfsd.conf file in
+utils/spnfsd/spnfsd.conf.  Copy this file to /etc/spnfsd.conf.
+
+By default, the DS-Mount-Directory is set to /spnfs (see spnfsd.conf).  Under
+this directory, mount points must be created for each DS to
+be used for pNFS data stripes.  These mount points are named by the ip address
+of the corresponding DS.  In the sample spnfsd.conf, there are two
+DSs defined (172.16.28.134 and 172.16.28.141).
+
+Following the sample spnfsd.conf,
+
+	mkdir /spnfs
+
+on the MDS (corresponding to DS-Mount-Directory).  Then
+
+	mkdir /spnfs/172.16.28.134
+	mkdir /spnfs/172.16.28.141
+
+to create the mount points for the DSs.
+
+On the DSs, chose a directory where data stripes will be created by the MDS.
+For the sample file, this directory is /pnfs, so on each DS execute:
+
+	mkdir /pnfs
+
+This directory is specified in the spnfsd.conf file by the DS*_ROOT option
+(where * is replaced by the DS number).  DS_ROOT is specified relative to
+the directory being exported by the DSs.  In our example, our DSs are exporting
+the root directory (/) and therefore our DS_ROOT is /pnfs.  On the DSs, we have
+the following entry in /etc/exports:
+
+	/ *(rw,fsid=0,insecure,no_root_squash,sync,no_subtree_check)
+
+N.B. If we had created a /exports directory and a /pnfs directory under
+/exports, and if we were exporting /exports, then DS_ROOT would still be /pnfs
+(not /exports/pnfs).
+
+It may be useful to add entries to /etc/fstab on the MDS to automatically
+mount the DS_ROOT file systems.  For this example, our MDS fstab would
+contain:
+
+	172.17.84.128:/pnfs /spnfs/172.17.84.128 nfs    defaults        1 2
+	172.17.84.122:/pnfs /spnfs/172.17.84.122 nfs    defaults        1 2
+
+The DS mounts must be performed manually or via fstab at this time (automatic
+mounting, directory creation, etc. are on the todo list).  To perform I/O
+through the MDS, the DS mounts MUST use NFSv3 at this time (this restriction
+will eventually be removed).
+
+
+On the MDS, choose a file system to use with spNFS and export it, e.g.:
+
+	/ *(rw,fsid=0,insecure,no_root_squash,sync,no_subtree_check,pnfs)
+
+Make sure nfsd and all supporting processes are running on the MDS and DSs.
+
+
+Running
+-------
+
+If rpc_pipefs is not already mounted (if you're running idmapd it probably is),
+you may want to add the following line to /etc/fstab:
+
+	rpc_pipefs    /var/lib/nfs/rpc_pipefs rpc_pipefs defaults     0 0
+
+to automatically mount rpc_pipefs.
+
+With spnfsd.conf configured for your environment and the mounts mounted as
+described above, spnfsd can now be started.
+
+On the MDS, execute spnfsd:
+
+	spnfsd
+
+The executable is located in the directory where it was built, and
+may also have been installed elsewhere depending on how you built nfs-utils.
+It will run in the foreground by default, and in fact will do so despite
+any options suggesting the contrary (it's still a debugging build).
+
+On the client, make sure the nfslayoutdriver module is loaded:
+
+	modprobe nfslayoutdriver
+
+Then mount the file system from the MDS:
+
+	mount -t nfs4 -o minorversion=1 mds:/ /mnt
+
+I/O through the MDS is now supported.  To use it, do not load the
+nfslayoutdriver on the client, and mount the MDS using NFSv4 or 4.1
+(NFSv2 and v3 are not yet supported).
+
+You may now use spNFS by performing file system activities in /mnt.
+If you create files in /mnt, you should see stripe files corresponding to
+new files being created on the DSs.  The current implementation names the
+stripe files based on the inode number of the file on the MDS.  For example,
+if you create a file foo in /mnt and do an 'ls -li /mnt/foo':
+
+	# ls -li foo
+	1233 -rw-r--r-- 1 root root 0 Nov 29 15:54 foo
+
+You should see stripe files on each under /pnfs (per the sample) named
+1233.  The file /pnfs/1233 on DS1 will contain the first <stripe size> bytes
+of data written to foo, DS2 will contain the next <stripe size> bytes, etc.
+Removing /mnt/foo will remove the corresponding stripe files on the DSs.
+Other file system operations should behave (mostly :-) as expected.
+
+
+Layout Segments
+---------------
+
+If the kernel is compiled to support layout segments, there will
+be two files created under /proc/fs/spnfs for controlling layout
+segment functionality.
+
+To enable layout segments, write a '1' to /proc/fs/spnfs/layoutseg, e.g.:
+
+	echo 1 > /proc/fs/spnfs/layoutseg
+
[...31817 lines suppressed...]
+		len = -EINVAL;
+		break;
+	}
+	return len;
+}
 #endif /* SUNRPC_SVC_XPRT_H */
diff -up linux-2.6.32.noarch/include/linux/sunrpc/xdr.h.orig linux-2.6.32.noarch/include/linux/sunrpc/xdr.h
--- linux-2.6.32.noarch/include/linux/sunrpc/xdr.h.orig	2009-12-02 22:51:21.000000000 -0500
+++ linux-2.6.32.noarch/include/linux/sunrpc/xdr.h	2010-03-23 14:54:39.301755000 -0400
@@ -129,6 +129,13 @@ xdr_decode_hyper(__be32 *p, __u64 *valp)
 	return p + 2;
 }
 
+static inline __be32 *
+xdr_decode_opaque_fixed(__be32 *p, void *ptr, unsigned int len)
+{
+	memcpy(ptr, p, len);
+	return p + XDR_QUADLEN(len);
+}
+
 /*
  * Adjust kvec to reflect end of xdr'ed data (RPC client XDR)
  */
@@ -195,6 +202,7 @@ struct xdr_stream {
 
 extern void xdr_init_encode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p);
 extern __be32 *xdr_reserve_space(struct xdr_stream *xdr, size_t nbytes);
+extern __be32 *xdr_rewind_stream(struct xdr_stream *xdr, __be32 *q);
 extern void xdr_write_pages(struct xdr_stream *xdr, struct page **pages,
 		unsigned int base, unsigned int len);
 extern void xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p);
diff -up linux-2.6.32.noarch/include/scsi/osd_initiator.h.orig linux-2.6.32.noarch/include/scsi/osd_initiator.h
--- linux-2.6.32.noarch/include/scsi/osd_initiator.h.orig	2009-12-02 22:51:21.000000000 -0500
+++ linux-2.6.32.noarch/include/scsi/osd_initiator.h	2010-03-23 14:54:39.307743000 -0400
@@ -56,10 +56,24 @@ struct osd_dev {
 #endif
 };
 
-/* Retrieve/return osd_dev(s) for use by Kernel clients */
-struct osd_dev *osduld_path_lookup(const char *dev_name); /*Use IS_ERR/ERR_PTR*/
+/* Unique Identification of an OSD device */
+struct osd_dev_info {
+	unsigned systemid_len;
+	u8 systemid[OSD_SYSTEMID_LEN];
+	unsigned osdname_len;
+	u8 *osdname;
+};
+
+/* Retrieve/return osd_dev(s) for use by Kernel clients
+ * Use IS_ERR/ERR_PTR on returned "osd_dev *".
+ */
+struct osd_dev *osduld_path_lookup(const char *dev_name);
+struct osd_dev *osduld_info_lookup(const struct osd_dev_info *odi);
 void osduld_put_device(struct osd_dev *od);
 
+const struct osd_dev_info *osduld_device_info(struct osd_dev *od);
+bool osduld_device_same(struct osd_dev *od, const struct osd_dev_info *odi);
+
 /* Add/remove test ioctls from external modules */
 typedef int (do_test_fn)(struct osd_dev *od, unsigned cmd, unsigned long arg);
 int osduld_register_test(unsigned ioctl, do_test_fn *do_test);
@@ -69,8 +83,24 @@ void osduld_unregister_test(unsigned ioc
 void osd_dev_init(struct osd_dev *od, struct scsi_device *scsi_device);
 void osd_dev_fini(struct osd_dev *od);
 
-/* some hi level device operations */
-int osd_auto_detect_ver(struct osd_dev *od, void *caps);    /* GFP_KERNEL */
+/**
+ * osd_auto_detect_ver - Detect the OSD version, return Unique Identification
+ *
+ * @od:     OSD target lun handle
+ * @caps:   Capabilities authorizing OSD root read attributes access
+ * @odi:    Retrieved information uniquely identifying the osd target lun
+ *          Note: odi->osdname must be kfreed by caller.
+ *
+ * Auto detects the OSD version of the OSD target and sets the @od
+ * accordingly. Meanwhile also returns the "system id" and "osd name" root
+ * attributes which uniquely identify the OSD target. This member is usually
+ * called by the ULD. ULD users should call osduld_device_info().
+ * This rutine allocates osd requests and memory at GFP_KERNEL level and might
+ * sleep.
+ */
+int osd_auto_detect_ver(struct osd_dev *od,
+	void *caps, struct osd_dev_info *odi);
+
 static inline struct request_queue *osd_request_queue(struct osd_dev *od)
 {
 	return od->scsi_device->request_queue;
@@ -84,6 +114,15 @@ static inline void osd_dev_set_ver(struc
 #endif
 }
 
+static inline bool osd_dev_is_ver1(struct osd_dev *od)
+{
+#ifdef OSD_VER1_SUPPORT
+	return od->version == OSD_VER1;
+#else
+	return false;
+#endif
+}
+
 struct osd_request;
 typedef void (osd_req_done_fn)(struct osd_request *or, void *private);
 
@@ -120,14 +159,9 @@ struct osd_request {
 	int async_error;
 };
 
-/* OSD Version control */
 static inline bool osd_req_is_ver1(struct osd_request *or)
 {
-#ifdef OSD_VER1_SUPPORT
-	return or->osd_dev->version == OSD_VER1;
-#else
-	return false;
-#endif
+	return osd_dev_is_ver1(or->osd_dev);
 }
 
 /*
diff -up linux-2.6.32.noarch/include/scsi/osd_sense.h.orig linux-2.6.32.noarch/include/scsi/osd_sense.h
--- linux-2.6.32.noarch/include/scsi/osd_sense.h.orig	2009-12-02 22:51:21.000000000 -0500
+++ linux-2.6.32.noarch/include/scsi/osd_sense.h	2010-03-23 14:54:39.313743000 -0400
@@ -255,6 +255,9 @@ enum osdv2_cdb_field_offset {
 	OSD_CFO_STARTING_BYTE	= OSD_CDB_OFFSET(v2.start_address),
 	OSD_CFO_PARTITION_ID	= OSD_CDB_OFFSET(partition),
 	OSD_CFO_OBJECT_ID	= OSD_CDB_OFFSET(object),
+	OSD_CFO_PERMISSIONS	= sizeof(struct osd_cdb_head) +
+					offsetof(struct osd_capability_head,
+						 permissions_bit_mask),
 };
 
 #endif /* ndef __OSD_SENSE_H__ */
diff -up linux-2.6.32.noarch/Makefile.orig linux-2.6.32.noarch/Makefile
diff -up linux-2.6.32.noarch/net/sunrpc/backchannel_rqst.c.orig linux-2.6.32.noarch/net/sunrpc/backchannel_rqst.c
--- linux-2.6.32.noarch/net/sunrpc/backchannel_rqst.c.orig	2009-12-02 22:51:21.000000000 -0500
+++ linux-2.6.32.noarch/net/sunrpc/backchannel_rqst.c	2010-03-23 14:54:39.318760000 -0400
@@ -220,6 +220,8 @@ struct rpc_rqst *xprt_alloc_bc_request(s
 {
 	struct rpc_rqst *req;
 
+	BUG_ON(!in_softirq());
+
 	dprintk("RPC:       allocate a backchannel request\n");
 	spin_lock(&xprt->bc_pa_lock);
 	if (!list_empty(&xprt->bc_pa_list)) {
diff -up linux-2.6.32.noarch/net/sunrpc/xdr.c.orig linux-2.6.32.noarch/net/sunrpc/xdr.c
--- linux-2.6.32.noarch/net/sunrpc/xdr.c.orig	2009-12-02 22:51:21.000000000 -0500
+++ linux-2.6.32.noarch/net/sunrpc/xdr.c	2010-03-23 14:54:39.324756000 -0400
@@ -402,16 +402,14 @@ xdr_shrink_pagelen(struct xdr_buf *buf, 
 
 	/* Shift the tail first */
 	if (tail->iov_len != 0) {
-		p = (char *)tail->iov_base + len;
-		if (tail->iov_len > len) {
-			copy = tail->iov_len - len;
-			memmove(p, tail->iov_base, copy);
-		} else
-			buf->buflen -= len;
-		/* Copy from the inlined pages into the tail */
 		copy = len;
-		if (copy > tail->iov_len)
+		if (tail->iov_len > len) {
+			p = (char *)tail->iov_base + len;
+			memmove(p, tail->iov_base, tail->iov_len - len);
+		} else {
 			copy = tail->iov_len;
+		}
+		/* Copy from the inlined pages into the tail */
 		_copy_from_pages((char *)tail->iov_base,
 				buf->pages, buf->page_base + pglen - len,
 				copy);
@@ -495,6 +493,27 @@ __be32 * xdr_reserve_space(struct xdr_st
 EXPORT_SYMBOL_GPL(xdr_reserve_space);
 
 /**
+ * xdr_rewind_stream - rewind a stream back to some checkpoint
+ * @xdr: pointer to xdr_stream
+ * @q: some checkpoint at historical place of @xdr
+ *
+ * Restors an xdr stream to some historical point. @q must be
+ * a logical xdr point in the past that was sampled by @q = @xdr->p.
+ */
+__be32 *xdr_rewind_stream(struct xdr_stream *xdr, __be32 *q)
+{
+	size_t nbytes = (xdr->p - q) << 2;
+
+	BUG_ON(xdr->p < q);
+	BUG_ON(nbytes > xdr->iov->iov_len || nbytes > xdr->buf->len);
+	xdr->p = q;
+	xdr->iov->iov_len -= nbytes;
+	xdr->buf->len -= nbytes;
+	return q;
+}
+EXPORT_SYMBOL_GPL(xdr_rewind_stream);
+
+/**
  * xdr_write_pages - Insert a list of pages into an XDR buffer for sending
  * @xdr: pointer to xdr_stream
  * @pages: list of pages


Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/config-generic,v
retrieving revision 1.344
retrieving revision 1.344.2.1
diff -u -p -r1.344 -r1.344.2.1
--- config-generic	18 Mar 2010 15:17:34 -0000	1.344
+++ config-generic	24 Mar 2010 20:55:45 -0000	1.344.2.1
@@ -3165,12 +3165,22 @@ CONFIG_NFS_FS=m
 CONFIG_NFS_V3=y
 CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
-# CONFIG_NFS_V4_1 is not set
+CONFIG_NFS_V4_1=y
 CONFIG_NFSD=m
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
 CONFIG_NFS_FSCACHE=y
+CONFIG_PNFS=y
+CONFIG_PNFSD=y
+CONFIG_PNFS_OBJLAYOUT=y
+CONFIG_PNFS_PANLAYOUT=y
+CONFIG_PNFS_BLOCK=y
+CONFIG_PNFSD_LOCAL_EXPORT=y
+CONFIG_SPNFS=y
+CONFIG_EXPORTFS_BLOCK_LAYOUT=y
+CONFIG_SPNFS_LAYOUTSEGMENTS=y
+CONFIG_SPNFS_BLOCK=y
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_EXPORTFS=m
@@ -3985,7 +3995,7 @@ CONFIG_PPS=m
 # These debug options are deliberatly left on (even in 'make release' kernels).
 # They aren't that much of a performance impact, and the value
 # from getting useful bug-reports makes it worth leaving them on.
-CONFIG_DYNAMIC_DEBUG=y
+# CONFIG_DYNAMIC_DEBUG is not set
 CONFIG_DEBUG_HIGHMEM=y
 CONFIG_DEBUG_SPINLOCK_SLEEP=y
 CONFIG_BOOT_PRINTK_DELAY=y


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/kernel.spec,v
retrieving revision 1.2050
retrieving revision 1.2050.2.1
diff -u -p -r1.2050 -r1.2050.2.1
--- kernel.spec	22 Mar 2010 20:40:52 -0000	1.2050
+++ kernel.spec	24 Mar 2010 20:55:45 -0000	1.2050.2.1
@@ -15,7 +15,7 @@ Summary: The Linux kernel
 # that the kernel isn't the stock distribution kernel, for example,
 # by setting the define to ".local" or ".bz123456"
 #
-# % define buildid .local
+%define buildid .pnfs
 
 # fedora_build defines which build revision of this kernel version we're
 # building. Rather than incrementing forever, as with the prior versioning
@@ -783,6 +783,8 @@ Patch14500: linux-2.6-tg3-netpoll.patch
 
 # ==============================================================================
 
+Patch50000: pnfs-all-2.6.32.patch
+Patch50001: linux-2.6.31-inline.patch
 %endif
 
 BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@@ -1439,6 +1441,9 @@ ApplyPatch ssb_check_for_sprom.patch
 
 # END OF PATCH APPLICATIONS ====================================================
 
+ApplyPatch pnfs-all-2.6.32.patch
+ApplyPatch linux-2.6.31-inline.patch
+
 %endif
 
 # Any further pre-build tree manipulations happen here.



More information about the scm-commits mailing list