From: Boaz Harrosh <bharrosh@panasas.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: avishay@gmail.com, jeff@garzik.org, viro@ZenIV.linux.org.uk,
linux-fsdevel@vger.kernel.org, osd-dev@open-osd.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 4/9] exofs: address_space_operations
Date: Wed, 31 Dec 2008 17:35:44 +0200 [thread overview]
Message-ID: <495B9150.6010501@panasas.com> (raw)
In-Reply-To: <20081229124514.71d29ae0.akpm@linux-foundation.org>
Andrew Morton wrote:
>> +
>> + kaddr = page_address(page);
>> +
>> + req = prepare_osd_write(sbi->s_dev, sbi->s_pid,
>> + inode->i_ino + EXOFS_OBJ_OFF, len, start, 0,
>> + kaddr);
>
> Does prepare_osd_write() modify the memory at *kaddr? If so, does it
> do the needed flush_dcache_page()?
>
kaddr is not modified by CPU. This is just a very BAD API left from the old
osd-initiator days.The address is used for preparing a BIO and submitted
to HW later. I will change all these places to receive a page* directly.
(It was meant to be changed in the future where I want to support read/write
page* array).
<snip>
>> + } else if (ret == -EFAULT) {
>> + char *kaddr;
>> +
>> + /* In this case we were trying to read something that wasn't on
>> + * disk yet - return a page full of zeroes. This should be OK,
>> + * because the object should be empty (if there was a write
>> + * before this read, the read would be waiting with the page
>> + * locked */
>> + kaddr = page_address(page);
>> + memset(kaddr, 0, PAGE_CACHE_SIZE);
>
> There is I think a missing flsh_dcache_page() here. Use of the
> (somewhat misnamed) zero_user() would be an appropriate fix and
> cleanup.
>
What happened here is that the HW actually never touched the page in question,
and it is returned to CPU, do I need to flsh_dcache_page anyway?
But this is not relevant since I will use zero_user() as you suggested.
Should I use clear_highpage as this is a clear of a full page?
<snip>
>> +
>> + /* this will be out of bounds, or doesn't exist yet */
>> + if ((page->index >= end_index + 1) || !ObjCreated(oi) || !amount
>> + /*|| (i_start >= oi->i_commit_size)*/) {
>> + kaddr = kmap_atomic(page, KM_USER0);
>> + memset(kaddr, 0, PAGE_CACHE_SIZE);
>> + flush_dcache_page(page);
>> + kunmap_atomic(page, KM_USER0);
>
> There's a flush_dcache_page() ;)
>
> Could use clear_highpage() here.
>
Thanks, sounds much better.
>> + SetPageUptodate(page);
>> + if (PageError(page))
>> + ClearPageError(page);
>> + if (is_async_unlock)
>> + unlock_page(page);
>> + goto out;
>> + }
>> +
>> + if (amount != PAGE_CACHE_SIZE) {
>> + kaddr = kmap_atomic(page, KM_USER0);
>> + memset(kaddr + amount, 0, PAGE_CACHE_SIZE - amount);
>> + flush_dcache_page(page);
>> + kunmap_atomic(page, KM_USER0);
>
> Use zero_user()?
>
Will change
Thanks
Boaz
next prev parent reply other threads:[~2008-12-31 15:36 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-16 14:48 [PATCHSET 0/9] exofs (was osdfs) Boaz Harrosh
2008-12-16 14:52 ` [PATCH 1/9] exofs: osd Swiss army knife Boaz Harrosh
2008-12-29 20:29 ` Andrew Morton
2008-12-31 15:33 ` Boaz Harrosh
2008-12-31 19:26 ` Andrew Morton
2009-01-01 14:44 ` Boaz Harrosh
2009-01-02 16:52 ` Pavel Machek
2009-01-04 8:43 ` Boaz Harrosh
2009-01-04 20:03 ` Pavel Machek
2009-01-05 9:01 ` Boaz Harrosh
2009-01-05 9:36 ` Pavel Machek
2008-12-16 15:15 ` Boaz Harrosh
2009-01-07 15:47 ` [osd-dev] " Benny Halevy
2009-01-13 13:55 ` Alan Cox
2009-01-13 14:43 ` Boaz Harrosh
2009-01-13 14:52 ` Boaz Harrosh
2009-01-13 15:09 ` Jamie Lokier
2009-01-13 15:17 ` Jeff Garzik
2009-01-13 15:28 ` Benny Halevy
2008-12-16 15:17 ` [PATCH 2/9] exofs: file and file_inode operations Boaz Harrosh
2008-12-29 20:34 ` Andrew Morton
2008-12-31 15:36 ` Boaz Harrosh
2008-12-16 15:21 ` [PATCH 3/9] exofs: symlink_inode and fast_symlink_inode operations Boaz Harrosh
2008-12-29 20:35 ` Andrew Morton
2008-12-16 15:22 ` [PATCH 4/9] exofs: address_space_operations Boaz Harrosh
2008-12-29 20:45 ` Andrew Morton
2008-12-31 15:35 ` Boaz Harrosh [this message]
2008-12-16 15:28 ` [PATCH 5/9] exofs: dir_inode and directory operations Boaz Harrosh
2008-12-29 20:47 ` Andrew Morton
2008-12-31 15:33 ` Boaz Harrosh
2008-12-16 15:31 ` [PATCH 6/9] exofs: super_operations and file_system_type Boaz Harrosh
2008-12-17 22:23 ` Marcin Slusarz
2008-12-18 8:41 ` Boaz Harrosh
2008-12-29 20:50 ` Andrew Morton
2008-12-16 15:33 ` [PATCH 7/9] exofs: mkexofs Boaz Harrosh
2008-12-29 20:14 ` Andrew Morton
2008-12-31 15:19 ` Boaz Harrosh
2008-12-31 15:57 ` James Bottomley
2009-01-01 9:22 ` [osd-dev] " Benny Halevy
2009-01-01 9:54 ` Jeff Garzik
2009-01-01 14:23 ` Benny Halevy
2009-01-01 14:28 ` Matthew Wilcox
2009-01-01 18:12 ` Jörn Engel
2009-01-01 23:26 ` J. Bruce Fields
2009-01-02 7:14 ` Benny Halevy
2009-01-04 15:20 ` Boaz Harrosh
2009-01-04 15:38 ` Christoph Hellwig
2009-01-12 18:12 ` James Bottomley
2009-01-12 19:23 ` Jeff Garzik
2009-01-12 19:56 ` James Bottomley
2009-01-12 20:22 ` Jeff Garzik
2009-01-12 23:25 ` James Bottomley
2009-01-13 13:03 ` [osd-dev] " Benny Halevy
2009-01-13 13:24 ` Jeff Garzik
2009-01-13 13:32 ` Benny Halevy
2009-01-13 13:44 ` Jeff Garzik
2009-01-13 14:03 ` Alan Cox
2009-01-13 14:17 ` Jeff Garzik
2009-01-13 16:14 ` Alan Cox
2009-01-13 17:21 ` Boaz Harrosh
2009-01-21 18:13 ` Jeff Garzik
2009-01-21 18:44 ` Boaz Harrosh
2009-01-12 22:48 ` Jamie Lokier
2009-01-06 8:40 ` Andreas Dilger
2008-12-31 19:25 ` Andrew Morton
2009-01-01 13:33 ` Boaz Harrosh
2009-01-02 22:46 ` James Bottomley
2009-01-04 8:59 ` Boaz Harrosh
2008-12-16 15:36 ` [PATCH 8/9] exofs: Documentation Boaz Harrosh
2008-12-18 7:47 ` Pavel Machek
2008-12-18 8:32 ` Boaz Harrosh
2008-12-16 15:38 ` [PATCH 9/9] fs: Add exofs to Kernel build Boaz Harrosh
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=495B9150.6010501@panasas.com \
--to=bharrosh@panasas.com \
--cc=akpm@linux-foundation.org \
--cc=avishay@gmail.com \
--cc=jeff@garzik.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=osd-dev@open-osd.org \
--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