From: Daniel Phillips <phillips@nl.linux.org>
To: ac9410@bellsouth.net
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH][CFT] (updated) ext2 directories in pagecache
Date: Thu, 3 May 2001 23:10:45 +0200 [thread overview]
Message-ID: <20010503211046Z92199-3530+25@humbolt.nl.linux.org> (raw)
> This combination against 2.4.4 won't allow directories to be moved.
> Ex: mv a b #fails with I/O error. See attached strace.
> But with ext2-dir-patch-S4 by itself, mv works as it should.
Now it also works with my index patch as it should:
http://nl.linux.org/~phillips/htree/dx.pcache-2.4.4-3
It was just an uninitialized *err return. Next patch I'll follow Al
Viro's suggestion and change ext2_getblk (used *only* in the directory
code) to use ERR_PTR instead of *err, saving an argument and eliminating
the chance for this kind of dumb error.
ext2_getblk now looks like:
struct buffer_head *ext2_getblk (struct inode *inode, u32 block, int create, int *err)
{
unsigned blockshift = inode->i_sb->s_blocksize_bits;
unsigned blocksize = 1 << blockshift;
unsigned pshift = PAGE_CACHE_SHIFT - blockshift;
struct buffer_head *bh;
struct page *page;
if (!(page = grab_cache_page(inode->i_mapping, block >> pshift)))
goto fail_page;
if (!page->buffers)
create_empty_buffers (page, inode->i_dev, blocksize);
bh = page_buffer (page, block & ((1 << pshift) - 1));
atomic_inc(&bh->b_count);
UnlockPage(page);
page_cache_release(page);
*err = 0;
if (buffer_mapped(bh))
return bh;
if ((*err = ext2_get_block(inode, block, bh, create)))
goto out_null;
if (!buffer_mapped(bh))
goto out_null;
if (!buffer_new(bh))
return bh;
lock_buffer(bh);
memset(bh->b_data, 0, blocksize);
mark_buffer_uptodate(bh, 1);
mark_buffer_dirty_inode(bh, inode);
unlock_buffer(bh);
return bh;
out_null:
brelse(bh);
return NULL;
fail_page:
*err = -EIO;
return NULL;
}
A little longer, somewhat clearer and much more correct.
--
Daniel
next reply other threads:[~2001-05-03 21:11 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-05-03 21:10 Daniel Phillips [this message]
2001-05-03 22:59 ` Albert Cranford
-- strict thread matches above, loose matches on Subject: below --
2001-05-11 7:10 Andreas Dilger
2001-05-11 7:19 ` Alexander Viro
2001-05-11 16:34 ` Andreas Dilger
2001-05-11 20:20 ` Daniel Phillips
2001-05-12 21:41 ` Andreas Dilger
2001-05-12 22:18 ` Alexander Viro
2001-05-13 2:13 ` Daniel Phillips
2001-05-13 2:34 ` Daniel Phillips
2001-05-14 18:33 ` Andreas Dilger
2001-05-14 19:29 ` Daniel Phillips
2001-05-14 21:50 ` Daniel Phillips
2001-05-16 3:11 ` Daniel Phillips
2001-05-11 13:02 ` Daniel Phillips
2001-05-10 20:53 Andreas Dilger
2001-05-11 1:10 ` Daniel Phillips
2001-05-10 7:21 Andreas Dilger
2001-05-13 22:15 ` Daniel Phillips
2001-05-14 20:04 ` Andreas Dilger
2001-05-14 22:18 ` Daniel Phillips
2001-05-14 22:23 ` Daniel Phillips
2001-05-06 23:16 Daniel Phillips
2001-05-09 21:22 ` Andreas Dilger
2001-05-11 1:04 ` Daniel Phillips
[not found] <01050303150500.00633@starship>
2001-05-03 1:43 ` Daniel Phillips
2001-04-29 20:35 Daniel Phillips
2001-05-02 3:03 ` Albert Cranford
2001-04-12 16:33 [PATCH][CFT] " Alexander Viro
2001-04-23 22:21 ` [PATCH][CFT] (updated) " Alexander Viro
2001-04-28 18:16 ` Alexander Viro
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=20010503211046Z92199-3530+25@humbolt.nl.linux.org \
--to=phillips@nl.linux.org \
--cc=ac9410@bellsouth.net \
--cc=linux-kernel@vger.kernel.org \
/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
all inboxes | Powered by JetHome®