From: Stephen Rothwell <sfr@canb.auug.org.au>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-next@vger.kernel.org, linux-kernel@vger.kernel.org,
Miklos Szeredi <mszeredi@suse.cz>,
Al Viro <viro@zeniv.linux.org.uk>,
Dave Chinner <dchinner@redhat.com>
Subject: linux-next: manual merge of the akpm tree with Linus' tree
Date: Mon, 9 Sep 2013 15:38:40 +1000 [thread overview]
Message-ID: <20130909153840.1783766acc78ea419e68b071@canb.auug.org.au> (raw)
[-- Attachment #1: Type: text/plain, Size: 4363 bytes --]
Hi Andrew,
Today's linux-next merge of the akpm tree got a conflict in fs/dcache.c
between commit db14fc3abcd5 ("vfs: add d_walk()") from Linus' tree and
commit "dcache: convert to use new lru list infrastructure" from the akpm
tree.
I fixed it up (hopefully - see below) and can carry the fix as necessary
(no action is required).
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
diff --cc fs/dcache.c
index fc05994,e4df9de..0000000
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@@ -1313,46 -1197,94 +1297,47 @@@ out
* drop the lock and return early due to latency
* constraints.
*/
-static int select_parent(struct dentry *parent, struct list_head *dispose)
-{
- struct dentry *this_parent;
- struct list_head *next;
- unsigned seq;
- int found = 0;
- int locked = 0;
- seq = read_seqbegin(&rename_lock);
-again:
- this_parent = parent;
- spin_lock(&this_parent->d_lock);
-repeat:
- next = this_parent->d_subdirs.next;
-resume:
- while (next != &this_parent->d_subdirs) {
- struct list_head *tmp = next;
- struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
- next = tmp->next;
-
- spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+struct select_data {
+ struct dentry *start;
+ struct list_head dispose;
+ int found;
+};
- /*
- * move only zero ref count dentries to the dispose list.
- *
- * Those which are presently on the shrink list, being processed
- * by shrink_dentry_list(), shouldn't be moved. Otherwise the
- * loop in shrink_dcache_parent() might not make any progress
- * and loop forever.
- */
- if (dentry->d_lockref.count) {
- dentry_lru_del(dentry);
- } else if (!(dentry->d_flags & DCACHE_SHRINK_LIST)) {
- dentry_lru_del(dentry);
- list_add_tail(&dentry->d_lru, dispose);
- dentry->d_flags |= DCACHE_SHRINK_LIST;
- found++;
- }
- /*
- * We can return to the caller if we have found some (this
- * ensures forward progress). We'll be coming back to find
- * the rest.
- */
- if (found && need_resched()) {
- spin_unlock(&dentry->d_lock);
- goto out;
- }
+static enum d_walk_ret select_collect(void *_data, struct dentry *dentry)
+{
+ struct select_data *data = _data;
+ enum d_walk_ret ret = D_WALK_CONTINUE;
- /*
- * Descend a level if the d_subdirs list is non-empty.
- */
- if (!list_empty(&dentry->d_subdirs)) {
- spin_unlock(&this_parent->d_lock);
- spin_release(&dentry->d_lock.dep_map, 1, _RET_IP_);
- this_parent = dentry;
- spin_acquire(&this_parent->d_lock.dep_map, 0, 1, _RET_IP_);
- goto repeat;
- }
+ if (data->start == dentry)
+ goto out;
- spin_unlock(&dentry->d_lock);
- }
/*
- * All done at this level ... ascend and resume the search.
+ * move only zero ref count dentries to the dispose list.
+ *
+ * Those which are presently on the shrink list, being processed
+ * by shrink_dentry_list(), shouldn't be moved. Otherwise the
+ * loop in shrink_dcache_parent() might not make any progress
+ * and loop forever.
*/
- if (this_parent != parent) {
- struct dentry *child = this_parent;
- this_parent = try_to_ascend(this_parent, locked, seq);
- if (!this_parent)
- goto rename_retry;
- next = child->d_u.d_child.next;
- goto resume;
+ if (dentry->d_lockref.count) {
+ dentry_lru_del(dentry);
+ } else if (!(dentry->d_flags & DCACHE_SHRINK_LIST)) {
- dentry_lru_move_list(dentry, &data->dispose);
++ dentry_lru_del(dentry);
++ list_add_tail(&dentry->d_lru, &data->dispose);
+ dentry->d_flags |= DCACHE_SHRINK_LIST;
+ data->found++;
+ ret = D_WALK_NORETRY;
}
+ /*
+ * We can return to the caller if we have found some (this
+ * ensures forward progress). We'll be coming back to find
+ * the rest.
+ */
+ if (data->found && need_resched())
+ ret = D_WALK_QUIT;
out:
- spin_unlock(&this_parent->d_lock);
- if (!locked && read_seqretry(&rename_lock, seq))
- goto rename_retry;
- if (locked)
- write_sequnlock(&rename_lock);
- return found;
-
-rename_retry:
- if (found)
- return found;
- if (locked)
- goto again;
- locked = 1;
- write_seqlock(&rename_lock);
- goto again;
+ return ret;
}
/**
[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]
next reply other threads:[~2013-09-09 5:38 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-09 5:38 Stephen Rothwell [this message]
-- strict thread matches above, loose matches on Subject: below --
2019-12-02 2:17 linux-next: manual merge of the akpm tree with Linus' tree Stephen Rothwell
2019-12-02 2:08 Stephen Rothwell
2018-10-15 7:22 Stephen Rothwell
2018-10-15 7:04 Stephen Rothwell
2018-03-26 8:56 Stephen Rothwell
2017-01-09 2:51 Stephen Rothwell
2016-12-12 5:49 Stephen Rothwell
2016-01-19 2:42 Stephen Rothwell
2016-01-19 2:36 Stephen Rothwell
2015-07-27 5:26 Stephen Rothwell
2013-09-10 4:38 Stephen Rothwell
2013-09-10 22:27 ` Andrew Morton
2013-09-10 22:29 ` Al Viro
2013-09-10 22:35 ` Andrew Morton
2013-09-10 22:36 ` Al Viro
2013-09-10 22:39 ` Al Viro
2013-09-10 22:41 ` Andrew Morton
2013-09-10 22:48 ` Al Viro
2013-09-10 22:59 ` Al Viro
2013-09-10 23:13 ` Andrew Morton
2013-09-10 23:55 ` Al Viro
2013-09-11 4:30 ` Stephen Rothwell
2013-09-10 23:37 ` Linus Torvalds
2013-09-10 23:53 ` Al Viro
2013-09-11 0:01 ` Linus Torvalds
2013-09-11 0:39 ` Dave Chinner
2013-09-13 0:56 ` Linus Torvalds
2013-09-13 1:12 ` Linus Torvalds
2013-09-13 1:35 ` Al Viro
2013-09-13 19:12 ` Linus Torvalds
2013-09-13 19:28 ` Linus Torvalds
2013-09-13 19:54 ` Linus Torvalds
2013-09-13 20:00 ` Al Viro
2013-09-13 20:18 ` Al Viro
2013-09-13 20:23 ` Al Viro
2013-09-13 20:25 ` Linus Torvalds
2013-09-13 20:31 ` Linus Torvalds
2013-09-13 20:31 ` Al Viro
2013-09-13 20:34 ` Linus Torvalds
2013-09-10 22:35 ` Linus Torvalds
2013-09-10 22:44 ` Andrew Morton
2013-09-11 0:30 ` Stephen Rothwell
2013-09-11 0:41 ` Linus Torvalds
2013-09-10 4:21 Stephen Rothwell
2013-09-10 4:09 Stephen Rothwell
2013-09-10 4:12 ` Stephen Rothwell
2013-09-09 5:22 Stephen Rothwell
2013-09-09 5:16 Stephen Rothwell
2013-08-30 8:44 Stephen Rothwell
2013-05-27 6:20 Stephen Rothwell
2013-05-20 4:04 Stephen Rothwell
2013-05-20 12:19 ` Chris Mason
2013-05-13 5:20 Eric Paris
2013-05-13 2:07 Stephen Rothwell
2013-05-13 2:11 ` Eric Paris
2013-05-13 4:16 ` Stephen Rothwell
2013-05-13 4:49 ` Kees Cook
2013-05-13 5:14 ` Eric Paris
2013-05-02 6:01 Stephen Rothwell
2013-04-29 8:38 Stephen Rothwell
2013-04-19 7:40 Stephen Rothwell
2013-04-16 7:25 Stephen Rothwell
2013-04-03 6:10 Stephen Rothwell
2013-03-25 4:22 Stephen Rothwell
2013-03-04 2:21 Stephen Rothwell
2013-01-04 3:27 Stephen Rothwell
2012-12-11 5:25 Stephen Rothwell
2012-12-11 5:22 Stephen Rothwell
2012-12-11 7:58 ` Glauber Costa
2012-12-07 6:39 Stephen Rothwell
2012-11-30 6:24 Stephen Rothwell
2012-11-26 12:52 Stephen Rothwell
2012-11-26 12:48 Stephen Rothwell
2012-11-26 13:25 ` Xiaotian Feng
2012-11-26 12:34 Stephen Rothwell
2012-10-15 2:07 Stephen Rothwell
2012-10-15 22:14 ` Catalin Marinas
2012-10-01 14:15 Stephen Rothwell
2012-08-22 5:59 Stephen Rothwell
2012-08-22 8:58 ` Mel Gorman
2012-07-27 3:57 Stephen Rothwell
2012-07-02 6:39 Stephen Rothwell
2012-06-04 4:58 Stephen Rothwell
2012-05-31 4:24 Stephen Rothwell
2012-05-31 4:13 Stephen Rothwell
2012-05-31 7:25 ` Johannes Weiner
2012-05-31 8:24 ` Stephen Rothwell
2012-05-31 8:27 ` Stephen Rothwell
2012-05-21 8:23 Stephen Rothwell
2012-05-21 8:13 Stephen Rothwell
2012-05-21 8:16 ` Cyrill Gorcunov
2012-03-08 6:53 Stephen Rothwell
2012-03-08 7:32 ` Andrew Morton
2012-03-08 7:41 ` Stephen Rothwell
2012-03-08 7:50 ` Andrew Morton
2012-03-08 7:50 ` Xiao Guangrong
2012-03-08 9:59 ` Xiao Guangrong
2012-03-08 21:24 ` Andrew Morton
2012-03-08 23:42 ` Linus Torvalds
2011-12-28 7:54 Stephen Rothwell
2011-11-08 3:24 Stephen Rothwell
2011-11-01 8:16 Stephen Rothwell
2011-11-01 10:47 ` Tao Ma
2011-09-16 6:09 Stephen Rothwell
2011-08-15 4:52 Stephen Rothwell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130909153840.1783766acc78ea419e68b071@canb.auug.org.au \
--to=sfr@canb.auug.org.au \
--cc=akpm@linux-foundation.org \
--cc=dchinner@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=mszeredi@suse.cz \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).