From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 96738D149CD for ; Fri, 25 Oct 2024 18:19:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2E76C6B007B; Fri, 25 Oct 2024 14:19:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 297D36B008A; Fri, 25 Oct 2024 14:19:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 138276B008C; Fri, 25 Oct 2024 14:19:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id E93796B007B for ; Fri, 25 Oct 2024 14:19:50 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 8F5A7160EFF for ; Fri, 25 Oct 2024 18:19:27 +0000 (UTC) X-FDA: 82712937510.21.52154E8 Received: from mail-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) by imf17.hostedemail.com (Postfix) with ESMTP id DBABE40003 for ; Fri, 25 Oct 2024 18:19:32 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=PooDhjbf; spf=pass (imf17.hostedemail.com: domain of joannelkoong@gmail.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=joannelkoong@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729880233; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=+9xZaCMYKVNUqsBVzIMyuTrxIwRebHw99enZCT1oYWI=; b=0GC0EqMtyW0BjdPuPeV0vfSW7v3I3AiaMcdYCpcWHzTkPWgL43eM3t5d0AYD8LWV2l5Rd1 rrDSHjqWsm+DHzSYj1gdV7vcjyD75vMCsaS3W+plkCXdFfcOUnxhSVgQajdpNjA670H2xE hj/ClaQC15IOKss7uFvmFcFPzLYgGbs= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729880233; a=rsa-sha256; cv=none; b=mWw+mGKYRrIUwmFRHtT45yWtt+l2W3RxoBAeZaeVo+igxVbR5vnHfSfh1BU2l63pyLpqKX gS0SS8dHlS9dIyUF2aFW6A7VgodRakdLSA/8z0yhPqkEujmGXzM1hOxhsizg7PcIRfFZXU djO9J4nnXLMrG6AsChZErxjLZnBY6xk= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=PooDhjbf; spf=pass (imf17.hostedemail.com: domain of joannelkoong@gmail.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=joannelkoong@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-qt1-f173.google.com with SMTP id d75a77b69052e-46098928354so14046011cf.1 for ; Fri, 25 Oct 2024 11:19:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729880387; x=1730485187; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=+9xZaCMYKVNUqsBVzIMyuTrxIwRebHw99enZCT1oYWI=; b=PooDhjbfgjvF/5NrmA7++s2vpe1Xf+PmWhj/G86WYnuwrCuLbctxuoBe1+t16dz2ju IKyoThz0tapCdcrLpdE5RSDZEqPE66P6kLZSgcHbYatwx5hoWw0th75US4+nr+uqBq+1 HzYa7EirONJwNC6poJUikJX5zb7wakjj6uGrxBG3hyoB9KGNHiX4DKwvQBQln54nucW4 l3cbrzEIDUnovRnY+2nhyhvV7NgtH0DXmKpQb8uAATtxfl/eK0D5V4DP2A82pNlo9hoO yMGojD68jG2vIQz+eU0hczouckXEcfFAgMeYZ1bmT+NkB/Dlw8ow5OtlqqbnGYIeayLJ /g5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729880387; x=1730485187; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+9xZaCMYKVNUqsBVzIMyuTrxIwRebHw99enZCT1oYWI=; b=O4YFLCbYfVYAagiCZ2JCaHffu3o14GzXQWD+UVlymInGvXau/O8Jdqqo8Ouvhn8uTN jXp10/hcgsG0l0xSwAGR3oQu4T3AwrbWD7eQag1aE5pRvjfzDFMOrfVePSFimxmI1fZ5 iYHpFZhRWORwGP3WAnqC5UObK+M3zlqvdyUe+Q4xWCKEdAOBQbuTrALdh4oCMHGj5XVf wT65M3FqIOKKaYADyAkRv9vXkkpltjdv8vQ61tRa4xXopcpXtQQvBjXGPbQxq7FKJweC rzMy/q/YeElEZK8w1ITBT6eFNug0kP51Fp1xvYvLwz9pm0WhRwp8qeOP1QAfmmPWELT0 Ofbg== X-Forwarded-Encrypted: i=1; AJvYcCXl6dlWHw6gHaLHOYSPC4l9SG6z9NKt8x+osTz/xdPoLHXsmRI5UWovrU50GtEfG5azJxs9YjxhYg==@kvack.org X-Gm-Message-State: AOJu0YwfLLb/+R6Tw/g/N302X9ksoFjvASdRkga9EAB4tqRp35FLj3m1 I1ph4Uy50iNbvcwMjmzlvbAe7fjH6vO19IhntIgyXFXLEjdkoXnyOX2i9mDYzLSDisNXWssSyJc y40Wzhhlc5shV5gF5J9Trb/KIVOA= X-Google-Smtp-Source: AGHT+IEfGIJ2iXBBf9Pv+w++7PrEPnltOwEaV/bfTM2VWPSkS6eT2bc9osH6MJlC2bnAD5IiVRQMx+Jq3JWxgUjxPNY= X-Received: by 2002:a05:622a:48f:b0:458:4126:ec46 with SMTP id d75a77b69052e-4613bff1dfbmr2261411cf.17.1729880387454; Fri, 25 Oct 2024 11:19:47 -0700 (PDT) MIME-Version: 1.0 References: <20241014182228.1941246-1-joannelkoong@gmail.com> <20241014182228.1941246-3-joannelkoong@gmail.com> <3e4ff496-f2ed-42ef-9f1a-405f32aa1c8c@linux.alibaba.com> In-Reply-To: From: Joanne Koong Date: Fri, 25 Oct 2024 11:19:36 -0700 Message-ID: Subject: Re: [PATCH v2 2/2] fuse: remove tmp folio for writebacks and internal rb tree To: Miklos Szeredi Cc: Jingbo Xu , Shakeel Butt , linux-fsdevel@vger.kernel.org, josef@toxicpanda.com, bernd.schubert@fastmail.fm, hannes@cmpxchg.org, linux-mm@kvack.org, kernel-team@meta.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: DBABE40003 X-Stat-Signature: w6wikojhtf6oakwsxh1f3zsbk3oga9ar X-HE-Tag: 1729880372-398530 X-HE-Meta: U2FsdGVkX1+Lek0zxFce1Zqo0Mo7zphoqk68OQMbYVnoRgPOQ6SlioFHKYKyBFFf9M05kMmHk8SE5Ud3WqK90EFlY/Gw8c2/QaFq4KdfDs4M76pg1QRZvOz/HPVu+2i4ZCqwA9k8w8AV+g1LWT1aLQGglpPEWAVnU/s2LBWriuN3klgkD/yHAhj0IcKilobkCmjB36Zlz9emxV8hB0dGmQ2umSAPwn3BVHntOSikGXxxktpSwBQYsGDRr7blJlkXVFWvlTpvmI/+f1R/gtdPXXuGAqQjgRrTAb3ftElwKBNvev0hYqQ5zybdLJqjESjxqTuN2+zKIW4clAkdc4MaZj9iV1gu1LlEjZs3+QZ8FdxWGliFdwnMqVCZRnsTo5EHBWZea9TPxXe/CWWZf3aeUtzvZDiRvGTP360/Vxj5tswtf7N5shZHvlTdE69QRVySeKPjF3BcMPVqvpWUJlXl61GhKDd3QFCgCUkUP5qaz6k8EFxMBebyo+y3uVAFqwvT2ST9HIyIKZq6X6gAQ4vf22VE5Zrrjo/8IV1NUWhQ21xfkkMR9N41OV4nj9y2YL4e2X9DQwxTrhTgg2gM7xIE220tDpeNhafhV3ab0d4Vt7UGygGN+02nk1/oC1XQN5Xi5mtjC+dsT78xVy+7bRIR7+Et+Y2a9PPOz+ewXfzIEphYLyzRTnvN8XflfLA4u64nIupOb3aw03bKi9MZh1x9c0iK32QXKaxENC5eQXWYlAqF9mcswtFgRcMZRvON8mHphFgB/lVLFdTgSVrztqtXM5MxePQ2HvHXkrV41ITmse7BuLphGykTufw00eknonRssy7RKi63hE1XV1Bi6GvG7c/CjOw4aTyBmIS+SJ4SbyeLV2jj0G7UVwE6xRSDytTL+Vn3niIfuUYGRjdyymxv1I9pxLAe//AOMynNKZ1L3G97lMM7+AT4IJRSWVQ27kPtlVeI78Tw+Q48dwRhwQl xhKmihi2 ZQuRcKtXCYwPR4QmivF1XCSPhSScA18VczpRGgPRbbGaW0ZYWzLNwFaybHDEkGPj5oFHey0vgD7TjD+RzOFP1DtVGeUVNasAHh1qCHYm5ESSiLUPUP7gJK15rWpo7BtU9wTcFOYKVrKQCvqoVWG1sThoD+r1K0ajPYClTO4tljmAGOMZnqhkoprh8guskdTmTmIWzKERnakQPEG/9JMx5L3o7EWknVE51Kgn4un7VdjnxM7cadLSrvPcMoTIl1jROCKVOCzZldgjqkOHQAI14NfqlAYS4YSnpW4ZrUHzT4UWoB/Tm3++6zcncJBOllM6oXBxLoE9mEriOStI3CTeXzfiGFw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.001239, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, Oct 25, 2024 at 11:02=E2=80=AFAM Miklos Szeredi = wrote: > > On Fri, 25 Oct 2024 at 19:36, Joanne Koong wrote= : > > > That's a great point. It seems like we can just skip waiting on > > writeback to finish for fuse folios in sync(2) altogether then. I'll > > look into what's the best way to do this. > > I just tested this, and it turns out this doesn't quite work the way > I'd expected. I can trigger sync(2) being blocked by a suspended fuse > server: > > task:kworker/u16:3 state:D stack:0 pid:172 tgid:172 ppid:2 > flags:0x00004000 > Workqueue: writeback wb_workfn (flush-0:30) > Call Trace: > __schedule+0x40b/0xad0 > schedule+0x36/0x120 > inode_sleep_on_writeback+0x9d/0xb0 > wb_writeback+0x104/0x3d0 > wb_workfn+0x325/0x490 > process_one_work+0x1d8/0x520 > worker_thread+0x1af/0x390 > kthread+0xcc/0x100 > ret_from_fork+0x2d/0x50 > ret_from_fork_asm+0x1a/0x30 > > task:dd state:S stack:0 pid:1364 tgid:1364 > ppid:1336 flags:0x00000002 > Call Trace: > __schedule+0x40b/0xad0 > schedule+0x36/0x120 > request_wait_answer+0x16b/0x200 > __fuse_simple_request+0xd6/0x290 > fuse_flush_times+0x119/0x140 > fuse_write_inode+0x6d/0xc0 > __writeback_single_inode+0x36d/0x480 > writeback_single_inode+0xa8/0x170 > write_inode_now+0x75/0xa0 > fuse_flush+0x85/0x1c0 > filp_flush+0x2c/0x70 > __x64_sys_close+0x2e/0x80 > do_syscall_64+0x64/0x140 > entry_SYSCALL_64_after_hwframe+0x76/0x7e > > task:sync state:D stack:0 pid:1365 tgid:1365 > ppid:1336 flags:0x00004002 > Call Trace: > __schedule+0x40b/0xad0 > schedule+0x36/0x120 > wb_wait_for_completion+0x56/0x80 > sync_inodes_sb+0xc5/0x450 > iterate_supers+0x69/0xd0 > ksys_sync+0x40/0xa0 > __do_sys_sync+0xa/0x20 > do_syscall_64+0x64/0x140 > entry_SYSCALL_64_after_hwframe+0x76/0x7e > Thanks for the trace. If i'm understanding it correctly, this only blocks temporarily until the writeback wb_workfn is rescheduled? > Maybe I'm too paranoid about this, and in practice we can just let > sync(2) block in any case. But I want to understand this better in the case of a malicious fuse server, it could block sync(2) forever so I think this means we have to skip the wait for fuse folios altogether. Thanks, Joanne > first. > > Thanks, > Miklos