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 |
- |