[Top] [All Lists]

Re: XFS: bad clientid on recovery on MIPS (VIPT cache)

To: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Subject: Re: XFS: bad clientid on recovery on MIPS (VIPT cache)
From: Ajeet Yadav <ajeet.yadav.77@xxxxxxxxx>
Date: Fri, 22 Oct 2010 10:55:44 +0530
Cc: "xfs@xxxxxxxxxxx" <xfs@xxxxxxxxxxx>
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=zvnZS9iX/cKhfro7zOob0XySUw5BFsFwFfG1KEaKo7E=; b=Il5Q+Ia+Vkh5KWoHwSz6SPldUY52uCOG2vCQey3EMWQtehEu6B04QKxpK5LaTkf3Nu YucZHQWDaOZEu6skE4kTnkIoZ6duJ7fKbI5YVW6gmF1DQfRB8awVNBF1mZGEojPu1j45 6R789OmADVihs9aP8el4GP5VBshJ90IHF2Udo=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=SH4Jg1E1pIQHhnUE0bvW+lshXebGOkg6I6T/1aUetqeDBazEie/7wg9K87WqwUJ7Ml U/H1mr7N/4mEGsmdZuHqkZ6vqLehjW0ayig+03z2h98Ik916sRItbE/gdJc2O+MRJ+8+ 9mw22QCUz69/L+o3cDlc/mqQTyiDSlx7ZHG/c=
In-reply-to: <AANLkTimFuG6cVLkYt+7-Y_8PnapFvmry5RUcmpOHaPco@xxxxxxxxxxxxxx>
References: <AANLkTi=wbBhb=s3z9vyw9gL9Qwy0goj+8UtueFyNq+y2@xxxxxxxxxxxxxx> <20101021125219.GA21472@xxxxxxxxxxxxx> <AANLkTimFuG6cVLkYt+7-Y_8PnapFvmry5RUcmpOHaPco@xxxxxxxxxxxxxx>
I wish to know, why the problem of bad clientid does not come, if we safely umount the USB storage device.
Also if anyone can help where XFS uses these flush_kernel_vmap_range/invalidate_kernel_vmap_range.
With what ever understanding I have developed about log recovery that buffer "dbp" is updated with new value in xlog_bread(), but the cache hold buffer lines of last iteration, I think if we can can dpd pages uncachable than it may solve this problem, pls comment if I am wrong.  
dbp = xlog_get_bp(log, BTOBB(h_size)); --------> In function xlog_do_recovery_pass()    
for (blk_no = tail_blk; blk_no < head_blk; ) {
    error = xlog_bread(log, blk_no + hblks, bblks, dbp,
    if (error)
            goto bread_err2;
    xlog_unpack_data(rhead, offset, log);
    if ((error = xlog_recover_process_data(log,
                   rhash, rhead, offset, pass)))
        goto bread_err2;
   blk_no += bblks + hblks;

On Thu, Oct 21, 2010 at 6:57 PM, Ajeet Yadav <ajeet.yadav.77@xxxxxxxxx> wrote:
Thanks for response,
Linux kernel I am using is 2.6.30, where as XFS I have ported until 2.6.34 on given kernel.
Do you think I need the mentioned API flush_kernel_vmap_range/invalidate_kernel_vmap_range in as well.I will be grateful if you can provide me sample code for the above API.  

On Thu, Oct 21, 2010 at 6:22 PM, Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
On Thu, Oct 21, 2010 at 05:41:43PM +0530, Ajeet Yadav wrote:
> Dear member,
> If I remove USB flash storage from PC/ARM/MIPS target (i.e
> without umount) while copying file to XFS partition and connect it to MIPS
> target I always get
> XFS: xlog_recover_process_data: bad clientid
> XFS: log mount/recovery failed: error 5
> XFS: log mount failed
> This problem does not occur, if I connect the same USB flash to PC/ARM
> target.
> I have tested this on 2.6.30 - 2.6.34 (It everywhere when concerend with

Since Linux 2.6.34 Linux uses the flush_kernel_vmap_range/
invalidate_kernel_vmap_range APIs to make I/O to vmapped
areas work on systems with virtually indexed caches.

Unfortunately only arm, parisc and sh actually implement these so far.
You'll need to implement an implementation of these APIs for your cache
architecture to make XFS work on MIPS with virtually indexed caches.

<Prev in Thread] Current Thread [Next in Thread>