Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Marek <mmarek@suse.cz>2013-02-25 08:21:23 +0100
committerMichal Marek <mmarek@suse.cz>2013-02-25 08:21:23 +0100
commit055263ab938ed9f054da0283b4fad7ca99efb72b (patch)
tree0211bda580c818de2e30b4c69e78cb3e23227ba2
parent1218224fc4a9e970290a151728c5694ea202cbee (diff)
parent766b245b82582e50d20270a636a50666952a3d57 (diff)
Merge branch 'SLE11-SP2' into SLE11-SP3rpm-3.0.65-0.9
Conflicts: kernel-source.changes patches.drivers/alsa-sp3-* patches.fixes/mm-mmu_notifier-have-mmu_notifiers-use-a-global-SRCU-so-they-may-safely-schedule.patch series.conf
-rw-r--r--patches.fixes/block-disable-discard-request-merge-temporarily.patch31
-rw-r--r--patches.fixes/nfs-umount-fix64
-rw-r--r--series.conf2
3 files changed, 97 insertions, 0 deletions
diff --git a/patches.fixes/block-disable-discard-request-merge-temporarily.patch b/patches.fixes/block-disable-discard-request-merge-temporarily.patch
new file mode 100644
index 0000000000..bc2c6c0729
--- /dev/null
+++ b/patches.fixes/block-disable-discard-request-merge-temporarily.patch
@@ -0,0 +1,31 @@
+From: Shaohua Li <shli@fusionio.com>
+Subject: block: disable discard request merge temporarily
+Git-commit: 276f0f5d157bb4a816053f4f3a941dbcd4f76556
+References: bnc#803067
+Patch-mainline: v3.8-rc7
+
+The SCSI discard request merge never worked, and looks no solution
+for in future, let's disable it temporarily.
+
+Acked-by: Ankit Jain <jankit@suse.com>
+Signed-off-by: Shaohua Li <shli@fusionio.com>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+
+---
+ include/linux/blkdev.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: b/include/linux/blkdev.h
+===================================================================
+--- a/include/linux/blkdev.h
++++ b/include/linux/blkdev.h
+@@ -562,7 +562,7 @@ static inline void blk_clear_queue_full(
+ * it already be started by driver.
+ */
+ #define RQ_NOMERGE_FLAGS \
+- (REQ_NOMERGE | REQ_STARTED | REQ_SOFTBARRIER | REQ_FLUSH | REQ_FUA)
++ (REQ_NOMERGE | REQ_STARTED | REQ_SOFTBARRIER | REQ_FLUSH | REQ_FUA | REQ_DISCARD)
+ #define rq_mergeable(rq) \
+ (!((rq)->cmd_flags & RQ_NOMERGE_FLAGS) && \
+ (((rq)->cmd_flags & REQ_DISCARD) || \
diff --git a/patches.fixes/nfs-umount-fix b/patches.fixes/nfs-umount-fix
new file mode 100644
index 0000000000..e7f437f47a
--- /dev/null
+++ b/patches.fixes/nfs-umount-fix
@@ -0,0 +1,64 @@
+From: NeilBrown <nfbrown@suse.com>
+Subject: Ensure NFS doesn't block on dead server during unmount
+Patch-mainline: NO - mainline is planing a different approach I think.
+References: bnc#794529
+
+We set a namei_data flag for unmount requests, and get NFS d_validate
+to not try to validate dentries while the flag is set. As we only want
+to unmount, there is no really need to validate anything.
+
+Acked-by: NeilBrown <neilb@suse.de>
+Signed-off-by: Neil Brown <neilb@suse.de>
+
+---
+ fs/namespace.c | 2 +-
+ fs/nfs/dir.c | 7 ++++++-
+ include/linux/namei.h | 3 +++
+ 3 files changed, 10 insertions(+), 2 deletions(-)
+
+--- linux-3.0-SLE11-SP2.orig/fs/namespace.c
++++ linux-3.0-SLE11-SP2/fs/namespace.c
+@@ -1361,7 +1361,7 @@ SYSCALL_DEFINE2(umount, char __user *, n
+ {
+ struct path path;
+ int retval;
+- int lookup_flags = 0;
++ int lookup_flags = LOOKUP_UMOUNT;
+
+ if (flags & ~(MNT_FORCE | MNT_DETACH | MNT_EXPIRE | UMOUNT_NOFOLLOW))
+ return -EINVAL;
+--- linux-3.0-SLE11-SP2.orig/fs/nfs/dir.c
++++ linux-3.0-SLE11-SP2/fs/nfs/dir.c
+@@ -1107,6 +1107,10 @@ static int nfs_lookup_revalidate(struct
+ if (nd && (nd->flags & LOOKUP_RCU))
+ return -ECHILD;
+
++ if (nd && (nd->flags & LOOKUP_UMOUNT))
++ /* on unmount, assume all dentries are correct */
++ return 1;
++
+ parent = dget_parent(dentry);
+ dir = parent->d_inode;
+ nfs_inc_stats(dir, NFSIOS_DENTRYREVALIDATE);
+@@ -1138,7 +1142,8 @@ static int nfs_lookup_revalidate(struct
+ if (NFS_STALE(inode))
+ goto out_bad;
+
+- if (nd->last_type != LAST_NORM) {
++ if (nd && (nd->last_type != LAST_NORM ||
++ (nd->flags & LOOKUP_JUMPED))) {
+ /* name not relevant, just inode */
+ error = nfs_revalidate_inode(NFS_SERVER(inode), inode);
+ if (error)
+--- linux-3.0-SLE11-SP2.orig/include/linux/namei.h
++++ linux-3.0-SLE11-SP2/include/linux/namei.h
+@@ -66,6 +66,9 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LA
+ #define LOOKUP_JUMPED 0x1000
+ #define LOOKUP_ROOT 0x2000
+ #define LOOKUP_EMPTY 0x4000
++#define LOOKUP_UMOUNT 0x8000 /* Am unmounting, don't contact NFS
++ * server if at all possible.
++ */
+
+ extern int user_path_at(int, const char __user *, unsigned, struct path *);
+ extern int user_path_at_empty(int, const char __user *, unsigned, struct path *, int *empty);
diff --git a/series.conf b/series.conf
index fe463893c3..834a6cb223 100644
--- a/series.conf
+++ b/series.conf
@@ -1181,6 +1181,7 @@
patches.fixes/block-do-no-artificially-constrain-max_sectors.patch
patches.fixes/bio-don-t-overflow-in-bio_get_nr_vecs.patch
patches.fixes/bio-allocation-failure-due-to-bio_get_nr_vecs.patch
+ patches.fixes/block-disable-discard-request-merge-temporarily.patch
patches.fixes/block-misc-updates-to-blk_get_queue.patch
########################################################
@@ -2838,6 +2839,7 @@
patches.fixes/nohz-fix-idle-ticks-in-cpu-summary-line-for-proc-stat.patch
patches.fixes/epoll-clear-the-tfile_check_list-on-eloop.patch
patches.fixes/nfs-increase-callback-threads
+ patches.fixes/nfs-umount-fix
patches.fixes/cachefiles-add-support-for-large-files-in-filesys.patch
patches.fixes/bug-795354_Allow-sec-none-mounts-in-certain-cases.patch