From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongsheng Yang Subject: Re: [PATCH RESEND] ubifs: Introduce a mount option of force_atime. Date: Tue, 9 Jun 2015 11:24:21 +0800 Message-ID: <55765C65.80302@cn.fujitsu.com> References: <1433758060-18614-1-git-send-email-yangds.fnst@cn.fujitsu.com> <55761D51.7000005@nod.at> Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-15"; format=flowed Content-Transfer-Encoding: 7bit Cc: To: Richard Weinberger , , , Return-path: Received: from cn.fujitsu.com ([59.151.112.132]:49370 "EHLO heian.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1752685AbbFID3M (ORCPT ); Mon, 8 Jun 2015 23:29:12 -0400 In-Reply-To: <55761D51.7000005@nod.at> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On 06/09/2015 06:55 AM, Richard Weinberger wrote: > Am 08.06.2015 um 12:07 schrieb Dongsheng Yang: >> - ubifs_assert(mutex_is_locked(&ui->ui_mutex)); >> if (!ui->dirty) { >> + if (!locked) { >> + /* >> + * It's a little tricky here, there is only one >> + * possible user of ubifs_dirty_inode did not do >> + * a budget for this inode. At the same time, this >> + * user is not holding the ui->ui_mutex. Then if >> + * we found ui->ui_mutex is not locked, we can say: >> + * we need to do a budget in ubifs_dirty_inode here. >> + */ >> + struct ubifs_budget_req req = { .dirtied_ino = 1, >> + .dirtied_ino_d = ALIGN(ui->data_len, 8) }; >> + >> + ret = ubifs_budget_space(c, &req); >> + if (ret) >> + goto out; >> + } > > So, this is the new case when ->dirty_inode() is called via generic_update_time()? > Did you research whether you can detect that case also by looking at the flags parameter? > I'd give I_DIRTY_TIME a try. This way you could get at least rid of the mutex_is_locked() > usage. Okey, after a reading, I'm afraid I can not think a better idea out. The flags between *old* cases and the *new* case can possiblly be same. Then we can't use the flags to filter the new case from old cases. But I think I can append a patch to add a support for lazytime here: if (flags == I_DIRTY_TIME) return; Thanx Yang > > Thanks, > //richard > . >