Displaying 10 results from an estimated 10 matches for "inode_lock".
2009 Aug 21
0
[GIT PULL] btrfs rb corruption fix
...root *root = BTRFS_I(inode)->root;
struct btrfs_inode *entry;
- struct rb_node **p = &root->inode_tree.rb_node;
- struct rb_node *parent = NULL;
+ struct rb_node **p;
+ struct rb_node *parent;
+
+again:
+ p = &root->inode_tree.rb_node;
+ parent = NULL;
spin_lock(&root->inode_lock);
while (*p) {
@@ -3108,13 +3112,16 @@ static void inode_tree_add(struct inode *inode)
entry = rb_entry(parent, struct btrfs_inode, rb_node);
if (inode->i_ino < entry->vfs_inode.i_ino)
- p = &(*p)->rb_left;
+ p = &parent->rb_left;
else if (inode->i_ino >...
2010 Oct 09
2
[PATCH 1/2] Ocfs2: Add a mount option "coherency=*" for O_DIRECT writes.
Currently, default behavior of O_DIRECT writes was allowing
concurrent writing among nodes, no cluster coherency guaranteed
(no EX locks was taken), it hurts buffered reads on other nodes
by reading stale data from cache.
The new mount option introduce a chance to choose two different
behaviors for O_DIRECT writes:
* coherency=full, as the default value, will disallow
concurrent
2009 Jan 12
1
Bug in inode deletion code leading to stale inodes
...because it is in use on other nodes
The scenario which I think is happening is as follows:
node1 node2
rmdir("d");
ocfs2_remote_dentry_delete()
ocfs2_dentry_convert_worker()
finishes ocfs2_unlink()
eventually enters ocfs2_delete_inode()
ocfs2_inode_lock()
ocfs2_query_inode_wipe() -> fail
ocfs2_inode_unlock()
ocfs2_dentry_post_unlock()
ocfs2_drop_dentry_lock()
iput()
ocfs2_delete_inode()
ocfs2_inode_lock()
ocfs2_query_inode_wipe() -> fail
ocfs2_inode_unlock()
clear_inode()
cl...
2010 Jun 07
2
Odd INFO "120 seconds" in logs for 2.6.18-194.3.1
Hi,
Since upgrading to "2.6.18-194" I am getting odd messages in the logs.
Such as;
sraid3 kernel INFO task pdflush 259 blocked for more than 120 seconds.
The output from
> grep '120 seconds' /var/log/messages | tr : ' ' | awk '{print $10}' | sort | uniq -c
6 nfsd
4 pdflush
This is from an NFS server that since the upgrade has been
2005 Jan 04
0
[PATCH] BUG on error handlings in Ext3 under I/O failure condition
...eded by knfsd.
*/
-void write_inode_now(struct inode *inode, int sync)
+int write_inode_now(struct inode *inode, int sync)
{
+ int err = 0;
struct writeback_control wbc = {
.nr_to_write = LONG_MAX,
.sync_mode = WB_SYNC_ALL,
@@ -569,10 +570,11 @@
might_sleep();
spin_lock(&inode_lock);
- __writeback_single_inode(inode, &wbc);
+ err = __writeback_single_inode(inode, &wbc);
spin_unlock(&inode_lock);
if (sync)
wait_on_inode(inode);
+ return err;
}
EXPORT_SYMBOL(write_inode_now);
@@ -641,8 +643,11 @@
need_write_inode_now = 1;
spin_unlock(&inode...
2009 Jul 20
1
[PATCH] ocfs2: flush dentry lock drop when sync ocfs2 volume.
...stem.
3. invalidate_inodes.
In shrink_dcache_for_umount, we will drop the dentry, and queue
ocfs2_wq for dentry lock put. While in invalidate_inodes we will
call invalidate_list which will iterate all the inodes for the sb.
The bad thing is that in this function it will call
cond_resched_lock(&inode_lock). So if in any case, we are scheduled
out and ocfs2_wq is scheduled and drop some inodes, the "next" in
invalidate_list will get damaged(have next->next = next). And the
invalidate_list will enter dead loop and cause very high cpu.
So the only chance that we can solve this problem is...
2011 May 18
0
[PATCH] BTRFS: Remove unused node_lock
...root(u32 nodesize, u32 leafsize, u32 sectorsize,
INIT_LIST_HEAD(&root->dirty_list);
INIT_LIST_HEAD(&root->orphan_list);
INIT_LIST_HEAD(&root->root_list);
- spin_lock_init(&root->node_lock);
spin_lock_init(&root->orphan_lock);
spin_lock_init(&root->inode_lock);
spin_lock_init(&root->accounting_lock);
--
1.7.4.4
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
2009 Apr 07
0
[PATCH 1/1] OCFS2: use i_size_read() instead of direct accessing inode->i_size
...uncate(inode, i_size_read(inode));
ret = written;
goto out_dio;
}
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c
index a20a0f1..1337ea6 100644
--- a/fs/ocfs2/journal.c
+++ b/fs/ocfs2/journal.c
@@ -805,14 +805,14 @@ int ocfs2_journal_init(struct ocfs2_journal *journal, int *dirty)
inode_lock = 1;
di = (struct ocfs2_dinode *)bh->b_data;
- if (inode->i_size < OCFS2_MIN_JOURNAL_SIZE) {
+ if (i_size_read(inode) < OCFS2_MIN_JOURNAL_SIZE) {
mlog(ML_ERROR, "Journal file size (%lld) is too small!\n",
- inode->i_size);
+ i_size_read(inode));
stat...
2012 Apr 20
44
Ceph on btrfs 3.4rc
After running ceph on XFS for some time, I decided to try btrfs again.
Performance with the current "for-linux-min" branch and big metadata
is much better. The only problem (?) I''m still seeing is a warning
that seems to occur from time to time:
[87703.784552] ------------[ cut here ]------------
[87703.789759] WARNING: at fs/btrfs/inode.c:2103
2011 Oct 04
68
[patch 00/65] Error handling patchset v3
Hi all -
Here''s my current error handling patchset, against 3.1-rc8. Almost all of
this patchset is preparing for actual error handling. Before we start in
on that work, I''m trying to reduce the surface we need to worry about. It
turns out that there is a ton of code that returns an error code but never
actually reports an error.
The patchset has grown to 65 patches. 46 of them