Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:3.17 commit in: /
Date: Thu, 30 Oct 2014 17:27:44
Message-Id: 1414690049.a3c82272dc6d8c275bfaa531895c875eb1816366.mpagano@gentoo
1 commit: a3c82272dc6d8c275bfaa531895c875eb1816366
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Thu Oct 30 17:27:29 2014 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Thu Oct 30 17:27:29 2014 +0000
6 URL: http://sources.gentoo.org/gitweb/?p=proj/linux-patches.git;a=commit;h=a3c82272
7
8 Removal of redundant patch
9
10 ---
11 0000_README | 4 -
12 1900_udf-Fix-loading-of-special-inodes.patch | 147 ---------------------------
13 2 files changed, 151 deletions(-)
14
15 diff --git a/0000_README b/0000_README
16 index 2bfd7c6..907360b 100644
17 --- a/0000_README
18 +++ b/0000_README
19 @@ -55,10 +55,6 @@ Patch: 1510_mnt-Prevent-pivot_root-from-creating-a-loop-in-the-m.patch
20 From: https://bugs.gentoo.org/show_bug.cgi?id=524848
21 Desc: Prevent a leak of unreachable mounts
22
23 -Patch: 1900_udf-Fix-loading-of-special-inodes.patch
24 -From: https://bugs.gentoo.org/show_bug.cgi?id=525476
25 -Desc: Fix loading of special inodes
26 -
27 Patch: 2400_kcopy-patch-for-infiniband-driver.patch
28 From: Alexey Shvetsov <alexxy@g.o>
29 Desc: Zero copy for infiniband psm userspace driver
30
31 diff --git a/1900_udf-Fix-loading-of-special-inodes.patch b/1900_udf-Fix-loading-of-special-inodes.patch
32 deleted file mode 100644
33 index c0ef46c..0000000
34 --- a/1900_udf-Fix-loading-of-special-inodes.patch
35 +++ /dev/null
36 @@ -1,147 +0,0 @@
37 -From 6174c2eb8ecef271159bdcde460ce8af54d8f72f Mon Sep 17 00:00:00 2001
38 -From: Jan Kara <jack@××××.cz>
39 -Date: Thu, 9 Oct 2014 12:52:16 +0200
40 -Subject: [PATCH] udf: Fix loading of special inodes
41 -Cc: mpagano@g.o
42 -
43 -Some UDF media have special inodes (like VAT or metadata partition
44 -inodes) whose link_count is 0. Thus commit 4071b9136223 (udf: Properly
45 -detect stale inodes) broke loading these inodes because udf_iget()
46 -started returning -ESTALE for them. Since we still need to properly
47 -detect stale inodes queried by NFS, create two variants of udf_iget() -
48 -one which is used for looking up special inodes (which ignores
49 -link_count == 0) and one which is used for other cases which return
50 -ESTALE when link_count == 0.
51 -
52 -Fixes: 4071b913622316970d0e1919f7d82b4403fec5f2
53 -CC: stable@×××××××××××.org
54 -Signed-off-by: Jan Kara <jack@××××.cz>
55 -Signed-off-by: Mike Pagano <mpagano@g.o>
56 ----
57 - fs/udf/inode.c | 14 +++++++++-----
58 - fs/udf/super.c | 10 +++++-----
59 - fs/udf/udfdecl.h | 13 ++++++++++++-
60 - 3 files changed, 26 insertions(+), 11 deletions(-)
61 -
62 -diff --git a/fs/udf/inode.c b/fs/udf/inode.c
63 -index 0859884..c9b4df5 100644
64 ---- a/fs/udf/inode.c
65 -+++ b/fs/udf/inode.c
66 -@@ -1277,7 +1277,7 @@ update_time:
67 - */
68 - #define UDF_MAX_ICB_NESTING 1024
69 -
70 --static int udf_read_inode(struct inode *inode)
71 -+static int udf_read_inode(struct inode *inode, bool hidden_inode)
72 - {
73 - struct buffer_head *bh = NULL;
74 - struct fileEntry *fe;
75 -@@ -1436,8 +1436,11 @@ reread:
76 -
77 - link_count = le16_to_cpu(fe->fileLinkCount);
78 - if (!link_count) {
79 -- ret = -ESTALE;
80 -- goto out;
81 -+ if (!hidden_inode) {
82 -+ ret = -ESTALE;
83 -+ goto out;
84 -+ }
85 -+ link_count = 1;
86 - }
87 - set_nlink(inode, link_count);
88 -
89 -@@ -1826,7 +1829,8 @@ out:
90 - return err;
91 - }
92 -
93 --struct inode *udf_iget(struct super_block *sb, struct kernel_lb_addr *ino)
94 -+struct inode *__udf_iget(struct super_block *sb, struct kernel_lb_addr *ino,
95 -+ bool hidden_inode)
96 - {
97 - unsigned long block = udf_get_lb_pblock(sb, ino, 0);
98 - struct inode *inode = iget_locked(sb, block);
99 -@@ -1839,7 +1843,7 @@ struct inode *udf_iget(struct super_block *sb, struct kernel_lb_addr *ino)
100 - return inode;
101 -
102 - memcpy(&UDF_I(inode)->i_location, ino, sizeof(struct kernel_lb_addr));
103 -- err = udf_read_inode(inode);
104 -+ err = udf_read_inode(inode, hidden_inode);
105 - if (err < 0) {
106 - iget_failed(inode);
107 - return ERR_PTR(err);
108 -diff --git a/fs/udf/super.c b/fs/udf/super.c
109 -index 5401fc3..e229315 100644
110 ---- a/fs/udf/super.c
111 -+++ b/fs/udf/super.c
112 -@@ -959,7 +959,7 @@ struct inode *udf_find_metadata_inode_efe(struct super_block *sb,
113 - addr.logicalBlockNum = meta_file_loc;
114 - addr.partitionReferenceNum = partition_num;
115 -
116 -- metadata_fe = udf_iget(sb, &addr);
117 -+ metadata_fe = udf_iget_special(sb, &addr);
118 -
119 - if (IS_ERR(metadata_fe)) {
120 - udf_warn(sb, "metadata inode efe not found\n");
121 -@@ -1020,7 +1020,7 @@ static int udf_load_metadata_files(struct super_block *sb, int partition)
122 - udf_debug("Bitmap file location: block = %d part = %d\n",
123 - addr.logicalBlockNum, addr.partitionReferenceNum);
124 -
125 -- fe = udf_iget(sb, &addr);
126 -+ fe = udf_iget_special(sb, &addr);
127 - if (IS_ERR(fe)) {
128 - if (sb->s_flags & MS_RDONLY)
129 - udf_warn(sb, "bitmap inode efe not found but it's ok since the disc is mounted read-only\n");
130 -@@ -1119,7 +1119,7 @@ static int udf_fill_partdesc_info(struct super_block *sb,
131 - };
132 - struct inode *inode;
133 -
134 -- inode = udf_iget(sb, &loc);
135 -+ inode = udf_iget_special(sb, &loc);
136 - if (IS_ERR(inode)) {
137 - udf_debug("cannot load unallocSpaceTable (part %d)\n",
138 - p_index);
139 -@@ -1154,7 +1154,7 @@ static int udf_fill_partdesc_info(struct super_block *sb,
140 - };
141 - struct inode *inode;
142 -
143 -- inode = udf_iget(sb, &loc);
144 -+ inode = udf_iget_special(sb, &loc);
145 - if (IS_ERR(inode)) {
146 - udf_debug("cannot load freedSpaceTable (part %d)\n",
147 - p_index);
148 -@@ -1198,7 +1198,7 @@ static void udf_find_vat_block(struct super_block *sb, int p_index,
149 - vat_block >= map->s_partition_root &&
150 - vat_block >= start_block - 3; vat_block--) {
151 - ino.logicalBlockNum = vat_block - map->s_partition_root;
152 -- inode = udf_iget(sb, &ino);
153 -+ inode = udf_iget_special(sb, &ino);
154 - if (!IS_ERR(inode)) {
155 - sbi->s_vat_inode = inode;
156 - break;
157 -diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h
158 -index 742557b..1cc3c99 100644
159 ---- a/fs/udf/udfdecl.h
160 -+++ b/fs/udf/udfdecl.h
161 -@@ -138,7 +138,18 @@ extern int udf_write_fi(struct inode *inode, struct fileIdentDesc *,
162 - /* file.c */
163 - extern long udf_ioctl(struct file *, unsigned int, unsigned long);
164 - /* inode.c */
165 --extern struct inode *udf_iget(struct super_block *, struct kernel_lb_addr *);
166 -+extern struct inode *__udf_iget(struct super_block *, struct kernel_lb_addr *,
167 -+ bool hidden_inode);
168 -+static inline struct inode *udf_iget_special(struct super_block *sb,
169 -+ struct kernel_lb_addr *ino)
170 -+{
171 -+ return __udf_iget(sb, ino, true);
172 -+}
173 -+static inline struct inode *udf_iget(struct super_block *sb,
174 -+ struct kernel_lb_addr *ino)
175 -+{
176 -+ return __udf_iget(sb, ino, false);
177 -+}
178 - extern int udf_expand_file_adinicb(struct inode *);
179 - extern struct buffer_head *udf_expand_dir_adinicb(struct inode *, int *, int *);
180 - extern struct buffer_head *udf_bread(struct inode *, int, int, int *);
181 ---
182 -2.1.1
183 -