From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) by sourceware.org (Postfix) with ESMTPS id F3E593858416 for ; Tue, 5 Dec 2023 16:28:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F3E593858416 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=szeredi.hu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=szeredi.hu ARC-Filter: OpenARC Filter v1.0.0 sourceware.org F3E593858416 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::52f ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701793692; cv=none; b=QC3Vf+oieGz9W6OqLFqzn116cswGag4mhQzywKfixcW8hyxixYZBJ4/r4GTpZPz4Hp0Y+Z/ywhK7KceD0zom+xNdwtlG35kRjQDy5p/7X6K+3gsW6A8VvKpVoTm1hauySJrc7rO3ls+zFp2HoWLlE+8Ho5tCblIYcAicklViGq0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701793692; c=relaxed/simple; bh=rFt0gQgFmr5fYa1MyzpMHczfgSZhowTN7TQ0PSsr580=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=sbHgGeUIZyGQ4O9DvgBB2PSWUphVptEjI/kjp94Wt2Y1RC4lclK8uMaUWvK3JfY55+JBoy73v8hXhSDg5DBYO9bnmz4A9U79buJYlUVG0bh3LasxxzIh6BV7lOJW2QXmlxQnQxeYroa6N4ojsWUVtGgLdHWfSj/ImtKja1MO5ks= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ed1-x52f.google.com with SMTP id 4fb4d7f45d1cf-54cfb03f1a8so1827236a12.2 for ; Tue, 05 Dec 2023 08:28:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=szeredi.hu; s=google; t=1701793689; x=1702398489; darn=sourceware.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=muiyAVAJAt0leyfK62tM9muVpaBfAvMZ24s9nSjukeI=; b=fbv2HUdnwKwPIm6YegBfLPLKkZMDr1k3Loj6Rxvsbk377fXDrEDtp/flgWZUBWgka0 DMTVGBLaeeBMblR26J+dCXPhDByjIXrlHYzBfmDOUbOwE3fUDi5ghviRmOmKxuAIKUtj nL0IWI7sWrVC2Sx9PTjV9G9Y73GA7ahGxFo78= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701793689; x=1702398489; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=muiyAVAJAt0leyfK62tM9muVpaBfAvMZ24s9nSjukeI=; b=t+Jz1PFZ32JNbyDVRlFDCkiZ78dQYLjfaUghYANoPgXnGBYXuoBMsce51OA6Fla1UL psoVI7Yz0I/Sa07vsPmN3VQc6EbeNv3s7Se3+6ir6f6By90oRODumg+YbL0WqBOMmsHw zfk+Ryn5UrWtqn6HmT68nAy1HChXZ+7EPyLb9BNjeSQjmITZU7azfY78pUhYfiAfhYX2 m4iFeP5dRMnvDhDu8M19agJy9m/sVRUWmKX1uMqlGYXkZBZPF7np8pdkHjmSZlIcuxEZ V/MILp9IgdxDeEVMsDkMKS/aG41B7aRU78CpkU/muzoLllb0j2vq9FyDkQkJ2WeP+ubJ tXeA== X-Gm-Message-State: AOJu0YydqU9EiwZ8DxhHm64mA7S8TTwvumjnW5w/UM96Nr0X7wkqlz/P 96U8ZTxgvQUNuZoLbE/VKhR7vbyXqNT2EleIVDBDK39t5PxALZKX46g= X-Google-Smtp-Source: AGHT+IHzcycGhn66gOmYCXExkBsul/566clabqTonqNySB/dFhIKhTbjBxuOwQJuu1G2xDAvjG3T3lmD0fxBlDjLbis= X-Received: by 2002:a17:906:3f5b:b0:a19:a19a:eadb with SMTP id f27-20020a1709063f5b00b00a19a19aeadbmr506667ejj.148.1701793689524; Tue, 05 Dec 2023 08:28:09 -0800 (PST) MIME-Version: 1.0 From: Miklos Szeredi Date: Tue, 5 Dec 2023 17:27:58 +0100 Message-ID: Subject: [RFC] proposed libc interface and man page for listmount To: libc-alpha@sourceware.org, linux-man , Alejandro Colomar , Linux API , Florian Weimer , linux-fsdevel@vger.kernel.org, Karel Zak , Ian Kent , David Howells , Christian Brauner , Amir Goldstein , Arnd Bergmann Content-Type: multipart/mixed; boundary="00000000000058a05b060bc5b82c" X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,KAM_MANYTO,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --00000000000058a05b060bc5b82c Content-Type: text/plain; charset="UTF-8" Attaching the proposed man page for listing mounts (based on the new listmount() syscall). The raw interface is: syscall(__NR_listmount, const struct mnt_id_req __user *, req, u64 __user *, buf, size_t, bufsize, unsigned int, flags); The proposed libc API is. struct listmount *listmount_start(uint64_t mnt_id, unsigned int flags); uint64_t listmount_next(struct listmount *lm); void listmount_end(struct listmount *lm); I'm on the opinion that no wrapper is needed for the raw syscall, just like there isn't one for getdents(2). Comments? Thanks, Miklos Sample implementation: -------------------------------- #define LM_BUFSIZE 4096 struct listmount { size_t num; size_t pos; uint64_t mnt_id; unsigned int flags; uint64_t buf[LM_BUFSIZE]; }; static int do_listmount(struct listmount *lm) { struct mnt_id_req req = { .mnt_id = lm->mnt_id, .param = lm->buf[LM_BUFSIZE - 1], }; long res; res = syscall(__NR_listmount, &req, lm->buf, LM_BUFSIZE, lm->flags); if (res != -1) { lm->num = res; lm->pos = 0; } return res; } struct listmount *listmount_start(uint64_t mnt_id, unsigned int flags) { int res; struct listmount *lm = calloc(1, sizeof(*lm)); if (lm) { lm->mnt_id = mnt_id; lm->flags = flags; res = do_listmount(lm); if (res == -1) { free(lm); lm = NULL; } } return lm; } uint64_t listmount_next(struct listmount *lm) { int res; if (lm->pos == LM_BUFSIZE) { res = do_listmount(lm); if (res == -1) return 0; } /* End of list? */ if (lm->pos == lm->num) return 0; return lm->buf[lm->pos++]; } void listmount_end(struct listmount *lm) { free(lm); } --00000000000058a05b060bc5b82c Content-Type: application/x-troff-man; name="listmount_start.3" Content-Disposition: attachment; filename="listmount_start.3" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpsjze2c0 LlwiIENvcHlyaWdodCAyMDIzIE1pa2xvcyBTemVyZWRpIDxtc3plcmVkaUByZWRoYXQuY29tPgou XCIKLlwiIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCi5cIgouVEgg bGlzdG1vdW50X3N0YXJ0IDMgKGRhdGUpICJMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpIgou U0ggTkFNRQpsaXN0bW91bnRfc3RhcnQsIGxpc3Rtb3VudF9uZXh0LCBsaXN0bW91bnRfZW5kIFwt IGxpc3QgbW91bnRzCi5TSCBMSUJSQVJZClN0YW5kYXJkIEMgbGlicmFyeQouUkkgKCBsaWJjICIs ICIgXC1sYyApCi5TSCBTWU5PUFNJUwoubmYKLkJSICIjZGVmaW5lIF9HTlVfU09VUkNFIiAiICAg ICAgICAgLyogU2VlIGZlYXR1cmVfdGVzdF9tYWNyb3MoNykgKi8iCi5CICNpbmNsdWRlIDxzeXMv bW91bnQuaD4KLlAKLkJJICJzdHJ1Y3QgbGlzdG1vdW50ICpsaXN0bW91bnRfc3RhcnQodWludDY0 X3QgIiBtbnRfaWQgIiwgdW5zaWduZWQgaW50ICIgZmxhZ3MgIik7IgouQkkgInVpbnQ2NF90IGxp c3Rtb3VudF9uZXh0KHN0cnVjdCBsaXN0bW91bnQgKiIgbG0gIik7IgouQkkgInZvaWQgbGlzdG1v dW50X2VuZChzdHJ1Y3QgbGlzdG1vdW50ICoiIGxtICIpOyIKLlAKLlNIIERFU0NSSVBUSU9OCi5C UiBsaXN0bW91bnRfc3RhcnQgKCkKY3JlYXRlcyBhIGhhbmRsZSBmb3IgbGlzdGluZyBtb3VudHMu ICBNb3VudHMgdGhhdCBhcmUgYmVsb3cgdGhlIG1vdW50IHNwZWNpZmllZApieQouSSBtbnRfaWQK YXJlIGxpc3RlZC4gIFRvIGxpc3QgYWxsIG1vdW50cyB1bmRlciB0aGUgY3VycmVudCByb290LCB1 c2UgdGhlIHNwZWNpYWwgbW91bnQKSUQgdmFsdWUKLkJSIExTTVRfUk9PVAoodGhpcyB3aWxsIGJl IHRoZSBzYW1lIGxpc3QgYXMgaW4gL3Byb2Mvc2VsZi9tb3VudGluZm8pLiAgVGhlCi5JIGZsYWdz CnZhbHVlIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGFuZCBtdXN0IGJlIHNldCB0byB6ZXJv LgouUAouQlIgbGlzdG1vdW50X25leHQgKCkKcmV0dXJucyB0aGUgbmV4dCBtb3VudCBJRCBpbiB0 aGUgbGlzdC4gIElmIHRoZSBlbmQgb2YgdGhlIGxpc3QgaXMgcmVhY2hlZCBvciBhbgplcnJvciBo YXBwZW5zLCB0aGVuIHplcm8gaXMgcmV0dXJuZWQuCi5QCi5CUiBsaXN0bW91bnRfZW5kICgpCmRl c3Ryb3lzIHRoZSBoYW5kbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaXN0aW5nLgouU0ggUkVUVVJO IFZBTFVFCk9uIHN1Y2Nlc3MsCi5CUiBsaXNtb3VudF9zdGFydCAoKQpyZXR1cm5zIGEgbm9uLU5V TEwgcG9pbnRlci4gT24gZXJyb3IKLkJSIGxpc3Rtb3VudF9zdGFydCAoKQpyZXR1cm5zIE5VTEws IHdpdGgKLkkgZXJybm8Kc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci4KLlAgCk9uIHN1Y2Nlc3Ms Ci5CUiBsaXNtb3VudF9uZXh0ICgpCnJldHVybnMgYSBtb3VudCBJRCwgb3IgemVybyB3aGVuIHRo ZSBlbmQgb2YgdGhlIGxpc3QgaGFzIGJlZW4gcmVhY2hlZC4gT24gZXJyb3IKLkJSIGxpc3Rtb3Vu dF9zdGFydCAoKQpyZXR1cm5zIHplcm8sIHdpdGgKLkkgZXJybm8Kc2V0IHRvIGluZGljYXRlIHRo ZSBlcnJvci4KLlNIIEVSUk9SUwouVFAKLkIgRU5PRU5UClRoZSBtb3VudCBkZXNpZ25hdGVkIGJ5 Ci5JIG1udF9pZApkb2VzIG5vdCBleGlzdCBpbiB0aGUgY3VycmVudCBtb3VudCBuYW1lc3BhY2Uu Ci5UUAouQiBFUEVSTQpUaGUgbW91bnQgaXMgbm90IHJlYWNoYWJsZSBmcm9tIHRoZSBjdXJyZW50 IHJvb3QgZGlyZWN0b3J5IGFuZCB0aGUgY2FsbGluZyBwcm9jZXNzIGRvZXMgbm90IGhhdmUgdGhl Ci5CIENBUF9TWVNfQURNSU4KY2FwYWJpbGl0eS4KLlRQCi5CIEVJTlZBTApJbnZhbGlkIGZsYWcg c3BlY2lmaWVkIGluCi5JUiBmbGFncyAuCi5UUAouQiBFTk9NRU0KRmFpbGVkIHRvIGFsbG9jYXRl IG1lbW9yeS4KLlNIIFNUQU5EQVJEUwpMaW51eC4KLlNIIEhJU1RPUlkKTm90IHVwc3RyZWFtIHll dC4KLlNIIFNFRSBBTFNPCi5CUiBzdGF0bW91bnQoMiksCi5CUiBwcm9jKDUpLAouQlIgc3RhdHgo MikK --00000000000058a05b060bc5b82c--