From owner-freebsd-current@FreeBSD.ORG Tue Feb 26 19:11:26 2013 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id EE38DF61 for ; Tue, 26 Feb 2013 19:11:26 +0000 (UTC) (envelope-from crodr001@gmail.com) Received: from mail-la0-x236.google.com (mail-la0-x236.google.com [IPv6:2a00:1450:4010:c03::236]) by mx1.freebsd.org (Postfix) with ESMTP id 7E80B19C0 for ; Tue, 26 Feb 2013 19:11:26 +0000 (UTC) Received: by mail-la0-f54.google.com with SMTP id gw10so4303445lab.27 for ; Tue, 26 Feb 2013 11:11:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=TGvqfoyusu/0N3vhYZLhZN+p1E+Kj4WKAtebD2zhspw=; b=tGubtp7kGUufQH3a6OluY9DWVJvKpoulXc3CvlkB0LhKNgV32tezzf0XI0L5lAIckX yGMe1pcCbA0vkXcshtCzDR88QrdnZU8we+ox53DKjGQIPtBlCEHLZw9MZLQZJfsxclHu y34i/xwOjIaOUo+8g7pkuWZe9tHniudaXJLOtVZLqTMBk7vv/CxbCMSDo0l3LYtRU/hA mh3oPbEUjYopZOxFTFznRJfSTXaiq9zV7rm8klLNItH0efDfg9USyJV+sRsRtEo/zH7/ pfhk9cAGbOcCxDK5sKPxA34/vrE9j0cQqNXSZbHIUukhxrZ+mk2nU3DGVrjn1PdaOucJ 5Law== MIME-Version: 1.0 X-Received: by 10.112.36.168 with SMTP id r8mr992884lbj.131.1361905885419; Tue, 26 Feb 2013 11:11:25 -0800 (PST) Sender: crodr001@gmail.com Received: by 10.112.85.198 with HTTP; Tue, 26 Feb 2013 11:11:25 -0800 (PST) In-Reply-To: References: Date: Tue, 26 Feb 2013 11:11:25 -0800 X-Google-Sender-Auth: EvaB89FGACIEetETdiUBkzeHFiA Message-ID: Subject: Re: [patch] Proposal: move getmntopts(3) into libutil From: Craig Rodrigues To: Sergey Kandaurov Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: FreeBSD Current X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Feb 2013 19:11:27 -0000 On Tue, Feb 26, 2013 at 3:39 AM, Sergey Kandaurov wrote: > Hi. > > > External mount-like utilities may also have difficulties with building > to get getmntopts.c source as this requires /usr/src presence which is > in sync with installed world. Look how mount_fusefs from ports compiles: > # mount_fusefs needs mntopts.h and getmntopts.c from src/sbin/mount/ > I have no object in moving getmntopts.c to libutil. I'll give some history to some of this stuff, to the best of my ability. A few years ago, phk@ made a big change by introducing the nmount() system call to replace mount(). Look at all mount-related commits around this time: http://lists.freebsd.org/pipermail/cvs-src/2004-December/author.html#36373 This required changing every file system, and for old file systems which supported the "classic mount" cmount(), in each file system, the cmount() call had to internally call the nmount() code. In addition, phk made a pass to clean up all the userland mount programs to use nmount(). There was a lot of duplicated ("copy and pasted") code in various mount programs. I helped in the effort to clean up some of the userland mount() programs. pjd@ proposed to make the main /sbin/mount load a shared library for each specific file system, and each shared library would have file-system specific mount logic. For example: mount -t newfoofs /dev/blah /mnt would internally do something like: dlopen("libmount_newfoofs",.....); phk@ opposed this approach, saying that it could lead to ABI/API problems, library mismatches, etc. So we kept the existing approach. I modified /sbin/mount to by default use nmount() and only for certain file systems, exec an external mount program. phk's ideas for getmntopts.c was always to keep it as a place where "library-like" functions for mounting file systems would be kept. To avoid library mismatch problems, it was kept has a C file directly compiled into the mount programs. I have no problems keeping getmntopts.c in a separate library. libutil is fine, or even a separate libmntutil (or whatever). Just keep in mind the issues that could possibly come up if there is a mismatch between the userland mount programs, and the library which contains getmntopts.c Other than that, you proposal is quite reasonable, and I have no issue with it. Thanks! -- Craig -- Craig