Re: [patch] replacing "/dev/root" in /proc/mounts

Wakko Warner (wakko@animx.eu.org)
Thu, 7 Oct 1999 07:42:13 -0400


--SLDf9lqlvOQaIe6s
Content-Type: text/plain; charset=us-ascii

> > [wakko@ani:/backup/ani] stat / -FD
> > FSDevice: /dev/sda1 (8:01)
> > [wakko@ani:/backup/ani]
> >
> > stat is a program I wrote that uses struct stat and gives the info that you
> > requested (-F looks in /dev to find the device, -D shows only the device
> > that the file system is on)
>
> hmm, stat based... So presumably it does something like:

You're right!

> #include <stdio.h>
> #include <sys/stat.h>
> #include <unistd.h>
> int main(int argc, char **argv)
> {
> struct stat statBuf;
> unsigned int major, minor;
> stat("/", &statBuf);
> major=minor=statBuf.st_dev;
> printf("/ is on device major %d, minor %d\n",
> major>>8, minor&0xff);
> return( 0);
> }

Basically, yes. (see attached)

> while that does work, the problem with this approach is you have to look
> under the kernel's hood to discover how the kernel _currently_ defines
> a dev_t. Suppose somebody next week decides we don't have enough minor
> numbers for the new XP-37 5000-slot DVD changer... boom.

Recompile, and make sure /dev is correct. I don't really see a problem with
that.

> Having just read the util-linux mount source more carefully, I realised
> that the /etc/mtab entry mount writes is correct and that has to come

Actually, it does come from somewhere. From /etc/init.d/checkroot.sh

#
# Remount rootfs rw (default), but do not try to change mtab because it
# is on a ro fs until the remount succeeded. Then clean up old mtabs and
# finally write the new mtab.
#
mount -n -o remount,rw /
rm -f /etc/mtab~ /etc/nologin
: > /etc/mtab
mount -o remount,rw /
mount /proc

mount adds the mtab entry from /etc/fstab for / Seen it many times before.
Especially when the root dev was say, /dev/sdb1 instead of /dev/sda1 (and
/etc/mtab was incorrect)

> from somewhere. I couldn't believe they would abuse stat, and I was right;

What do you mean, abuse stat?

> I have found a better solution:
>
> #include <stdio.h>
> #include <fstab.h>
> int main(int argc, char **argv)
> {
> struct fstab* fstabBuf;
> printf("/ is on device %s\n",
> (getfsfile ("/"))->fs_spec);
> return( 0);
> }
>
> which works and won't be as fragile.

Where does getfsfile get it's information from? The kernel? I don't have a
manpage for it.

> > > can't remount /dev/root ro (since there isn't really a /dev/root),
> > > so you can't get a clean reboot.
> >
> > Ever tried: [wakko@ani:/backup/ani] grep remount /etc/init.d/umountfs
> > mount -n -o remount,ro / [wakko@ani:/backup/ani]
>
> Ok, bad example, sorry. however, my point was that the kernel is lying.

Actually, we could just put the contents of root= in /proc/mounts, couldn't
we?

> > So, what happens when / is an nfs mount? [wakko@gohan:/home/wakko]
> > cat /proc/mounts /dev/root / nfs rw,addr=192.168.2.3 0 0
> > [wakko@gohan:/home/wakko]
>
> same thing as always. I didn't mess with NFS (which is a special case in
> the kernel mount code), I just touched the non-NFS cases. I don't know
> what can be done to make the NFS case in /proc/mounts more correct.

Actually, it would probably be correct in saying /dev/nfs. I'm not sure
what the point of having the / listed in /proc/mounts as being correct
anyway. The kernel always knows how to do -o remounts with it (and any
other file system), and is never unmountable so you couldn't unmount then
mount back.

Maybe I'm confused as to what you wanted in the first message. How is it
helpful? (of course, it could be annoying) I thought about making a script
that would actually create /dev/root and it be a symlink to the real device.

-- 
 Lab tests show that use of micro$oft causes cancer in lab animals

--SLDf9lqlvOQaIe6s Content-Type: application/x-gzip Content-Description: stat(2) wrapper for use at the prompt Content-Disposition: attachment; filename="stat.c.gz" Content-Transfer-Encoding: base64

H4sIAAmF/DcCA81ce1fbSLL/G3+Kjvcklh0bDMvMZPFANoTHcGIgh0cyezOsjyzJshZZ8pFk DJthP/vWo1tqPWzITeDenExsun5dXV1VXV3V3cxaS7wT8cT0fREnZiLmkTmdOhF8ekniBGJ4 Jz57vu+ZE3ExDifTOAzEr3Pz+jr8uxl4k9tVZ7YaRu5OTQhxJKa+aTkiGXuxmEahG0GvWWAD u8OTS3H4sb+KMIbaoTDjazEO584NAJIxDH4XzkTsBLaYOPg9EtbYDFwnFgZzCUIRDn3PNRMv DNriCDn53rUDnRwvcJGZCJOxE8XIHsQI3FhsN7NRRzTEyIMh8kLGzmjmt4UdhVMc3AS2AXwk AIOPYXgD/9p25MQxMdudufFbIfpOgujrIJyv1lprtdpfvMDyZ7Yjfo0T2wtXxzta08gKEj/f FN/Fa6j2fCtaI7TybbPAA5b5NtdJwmmhr+1FTlBoi5MINJFvS7yJk2+Zzovsoyk21P5iOyPU xqf9s/Oj0xNRJ0cBo8VgBdFd3ajXamst4YdgAZAnFqAJGHJmJfgjYpCElC9XYlt8rYmvddu5 GcX1Nlh0YEbubAIyt0W3LRp7jfs2ArwgtJ0qgCcBkwX0qaSDaRPHwuGXocDM15Vy+BIw8+wq 8kyS3Wqyq3rHTlRFv1Tdo3A2rQIcSgDoqYpsS3Ls/RuVIPVs+gVYLGFDcKfran3v6pBKxFAi THSZKoApAdYigKVMtggwkYCx41dqYyzpuHA7C1RykGJ8J7mbVo6TKKuHlukvEuZCgdDNqwB9 CYgc0zaHvtNZ5IqRBMqlUgX5lHqrFyQdlD0wq8UaSWQYOBibqiDrajzTnzmdMPDvqlA3jOrS T/j3vnbfoxUcj8MoUSsYQm8kWmkTI9jPiK6iwsfBwfne/qeVle5tF/+sa5Sjk9O9/ZSyoVGO dcKmRugfnXw4TylvNMrl0Z5qX+9q7YdZ+4befvr5ZP9MUTZzPc5OLz8qyhudkk1kvau3nx/9 jxJ3I0c4ON/tfyAqETdzxN3+6XuYDFHe5CjvLo6OJUMYSKe8zygbecpxRtnMU0Dqk3fHLMKb PAkkeNenjkDEoXLEczIDUDYKlNOTfTAEkTYLpE/v+qcn/X8g6U2BdHDU37/4x0fsRkMVNbiL 0m9UUT4gZbOKcoyUN0ypzYLYcwPHzvYacEtYOLh/D2i9wv7S7a2Ap3b62Ci40QviBBarCEec 5ID7Yi8MN9yBeowFrUJulhDw/7na6VLWNxKoCMBWJRJat4FazVnHkeyYUtJ1hv1ZjBNsz3NM VXI+ODo/378wbtvirikMw7htilfCuGs2xfY2fWpQHQi4P0uAy5MC5NW2+A9haqglzxIk22AQ +IMBTKLxR9DoFUjxlEkCKIrzyf5ndB6jKaazBHEGs2hmkPOP797nAcgIAJB+jCDVGwlaOyme fhLgVAI0hFnexAzuhOM7GNZiQfmSmVDCBvFRYGinGAW5pDeqqWwEdo6Bj/kH6xwt0KtRK9Hg OxrHiwdI71FUlD0hC6joia1Ey2HdSqxLWFdhb0LPFsOZ59sDCrEDdGajWfsqZejJ7taXjSuA a6F5W3B6aBi4+YcjQyVXTbEmZFMu+wLnaIm/NpHjl/UrcsaaGIWRMDzxz20YKkvPvKtVcssX 2+Lkst/vCe/162YN5yK8kTB03Mg33aawwiDxgpnTQ7uchCymyvpwDMqywRICBu/i4AZOq6lz gt0KBIKFGYEJjXSibWGhzKWBx2aMGxo6/HoTc/Fyx/pWnbo6PkSAJf03FvZnBrAxSkvNYtN1 2Dy0gkdG/RKbtsTLWHzBXleQ38Oq3hFf6HNjR6yursofgp2rqz+CPzABwFWNrBWXU95Qt4AI stRXOnui06HkWLWsfExDBlQLiTMB+/8rjNYmkCFHaTcPulHKXOiWa+tMAYXJCnxk6XGhR2gl pi8mejcf8JQoF6DBbDKEqgyCFdjUFjlIZwadYGkUulxCQiyO9lKUCyi3hDrEtFiHXSIz6FrA YZMgjzWgQosiz4ZasTNrpv0OkT0yK3SktnJPN+tpsx3SflA6ogkgOkBxCATPctoymlfZA7xi eD25Aia4JL9s4w8FGZAA9oEKO3HA6a7xsy3MwF6DdTPBn1aF2HNG5szHoMS4lAe49b9mcSJg JKC53o0TrKaj78K4MucvDEqtPDSYDYvbzLHS7kPVfbHBmYwGSG3XMUXHEp0JdKZSAT4t+UmJ f4GXaVlQTVOobss6X/6gVBBC7PZgs9c7dw6AnSoDUo59iv6xtAsqdQ2+IiM2UUwzZXOjyGLu JWPR2UvNvbIXQvcgTKRJJSOMYKiftsBkepG6EhKJq47CJFUPgTQIuBAw4rvJMPRhB8Xl0hZO YmVOd4ELTdUmBVbUzjtbqHwxS2uoHeYdOxCS7RgsHID8zjS0xin3PnLH7TvlfKkyJGOjWUyS oAn87xTnzacjpI2c9Nlij4j1pBx/KNqgPYZesObHyGMCmzRpohPNO1EH/2YaGFFo0muhogvK 9EhpFtwljqG6sTHQT8IIT5/MgLIA0pHvwawyH10H/rKCKvqj74OgLB8ldYFY51MgPA5DXqCO S00TVuRB3E853wDnrPCq8AMiCp0IGWeng9lmHh3zrklpKLqwc+tp43zCcTjxLHZT+Wi+E243 +JPRhW9qQ5NQ3tJGcjeKExtCYTs76IH+xd5YBZ47ZmSNQUqIou6Y11oSasdqvHxAX0dugCbB E747Oo4DXpYzpQWmVZnYE1qMNBWj6IqKs8YR/EhSysQzl8u16ANMLGTGksIo2DlOMBg7kSOT nr2jM+jhRYRiLnRaRo3w2cuSL40LDoEBU6VkLQjWrcjJDUnMqLSIk2IaWcPcyBo7EHdBSbFD KQk6BO0bGL27lCFhomLIwLOzI95AZt+9HY0ote/KLAw4ca8uR387DBoJ2idOQNsXNFdIZGa+ je1DSIghTaZgJ7thwtNSRkA3nph3AEMTrgWjWMzHHliWN7nZZHKnIiFIjuUUsUKLMB9oTRxY NzibayeCdaWAsASRHezPeLiLA61RlzWZ0Sm7QhuochYFok4yvH37tp5L3ZRGCsoodINsxkr7 laggSZ3SOX1o6VpgxfUeEzJfYsuKV6/Ei9SHmqh8ythpusSYogtNSqXIBngSsAynWHlEBo1f 5/IMWaLkCMWYEoVAf2+ioRAuGIqTyDnuek+bj3Q4nIqQ2Tt8A6NBpKOx0Zu3BZ5M4fDwH4z9 ojA2yumJ1xDedlLnJpUSNW0Sr7e57uqlzXKlAXuqQFRTO+vTKpQgBGnyrO4p284KGDyzGBy/ +x1E+ZkRKhVvS8PVi808w86OPcB9gKk4HdqwgP4qTkjXnXWtNlEgQy5JkAAL6fe/nUG/1TgZ 4CYFevrzT2rf7X/It4PdpROS+2pqwsmnRdM2yTm9M+T04CfYwYyCyDDZn5qF+akJFlm2kWDP pkUezV5JAvZkFjviWraAyCafRiYhFUPBLPP5FLmt1gg0ZqyxnfVBqhmFMwj7rBnyU7Fd0o0c 6vXr1A/wP+nT8JEtzuIapCGowdKiGi/DURROIF8DUcIZ7JnRHUuRXyq5QrckV6HArdSXroWS yheqQkpRoYl72hDCIYkN2RVmnVnPnPSw3/KW48fkjAb+M+CsSt8TGZTbk8D7UWl8BDHzfUrE tkW9k/6p49ZUMH+zpkwoPU91pTSAY6v0coC1hU6OYXOAvYNkhHANS+ng+EIq1zJjOr06OId4 sqVEbcSNnhhCNLnu6Zj+iQbxKyFn+4dbshmVGYQ0U9NK5GZDWQjmgHz0oLrB0s44Dys5Q46Q QexKCASODGJVQo4OTjPIVIfYXNBl1LcaFVyDtbct/sP6k+nDGQT0tc+Rl1A2OvHiWB3DkwXV uSB2bqMAZ5fnZxC5YAg+8mlEjd4C6OcMukHQ+ULo2eHZRwndfIhrBv3pIa6nF79J6C8Pcc2g b1KupKD9W8eaJc5a/MWdXXn2WgzL4vpusYJ+51lDTzpDcKB7lpyU0OeXR3uMjmF5Qvr8WutB 4vz1Svqzyl0ASxlaJe62IZfTI4cbzhIKExmzjNd5Q63j8iTZCMCHzzsemuWhNqxbNcufHznL nx81y+Jw1bP8+cFZslNgTMWr/wdn+enidzks+8jQS8oz/RuNmjQKOaVsf2hmVUNUz475XdDs 9P0wjfyukwyo9B9giW/gPwM+DcSvuAnUsvCfFTA1GcbpBMZ4leJ7acj/4uFprExS4Oem6Ij1 5hXuBHjQL3cC2Ldw7+RvvcUyqvOPdIei7am8L2nbxAN7BPeqn4fWtZPUF+4TCqbOJfpecF1f uGVI9JnjznwQ7QCkrgTTRiHBu3RktkfbfH3hliHBe5CpWUkY3dUX7hwS+T7dsJawpn1Edjjw RmFR4vtlXgOaMGR9vTxZKKcBckyZya53N35Czxn+24lC3vhVE3c0bRps1BaKuEllB6bhuSyv mN1gaHKS7HROHuxQTJ6PQxHOYZdrQAhsQHl7ToWtmIfRNReiJ0fnwoSaFUtQWFHA7AL3ffgb +547TiC5Sg8R5RFDduaAKsJxjPQWRyqJ6papGcdzyMim8+VHChXnBcgvd15QOCvQTzH4XqlF H/opBis2a35EQYr7RL4cTetDiK/TORQQRlOvFqdzGM5NScvrRDUprU5UTYU6UZuLqhNVUzvr U6wTCaLXiapPvrzClHQ67+xM51oBqENRC9tCQuhmrrrGyRDYisZPE/gX4jOeZjhTVi4eWqF+ U92mVU5RRB6LixycgxPYqdrz5Q7dlqEksTeZopc6ZhDzEzhlyrkZFyqD+2qn+M4KSag/avXw 8ZFonex/2j9riTE+BwxeUMdcLVWafaGWKlmloOZ8nVShy/vaNxVKuNuin4De1NKGmEFNFm3M lKhgrOLbAE6JcuGAmoz0plaPBxLtRt8cDtxvCAd8ddxyq8OB+y3hwF0aDtyoFA7ciMOBJC0P B245HLjV4cAthwM3DQfuonDgFsOBuzAcuFFnx420cKBDXQoHEuIuDgcZAlvd/1U4cB8OB6na f1w4cP+fhAP3gXBQskpBzflw4H53OKBbjonpBQZd7kSu1ZbrrwU/3OhrO39ub7QmdwNsahr6 GUo7h241s9uA9KmGnn3jPT/4BI0F7fRy45/b8slSthblUOTNJkpQfhICjWqJWrxCoX2ALxoM nhUO0Rba8wX12qHNDqEyMbaFSr+tdF1TstnYa2zJN0PcVT7ra2pZqUR6JSQ986tATkvI42qg XwLSM8AK5KyExFq5jHNLuMNK3GUJR88GK5CHZY74jLACaZeQ1YqMG1v4w0oei4/eOJDhHT82 y9cqvLrL4F2JpuXYk3iIaS3+KltoMQKKTL5CS7KV8W4cN/D4W2+ZNLiDqBjyWA6Z1cB6zw8l XtdLeH1Yymu3xGu4hNeuzkuiipeb9ZfxlrgM8M1+oF4qJaHoQOtLK32j01ZjSo60Ca3IE0f+ ZQI24m7FupFPQitMPiyh+Y1oBdQsQenRaAXSKiHfL0BOygtyAfKgyofxwqYCe1FeverVaQU6 KqPPF4SF9fLi5HepFdibElY+VK3AJmWbyZerFeARgPPPOf/ES7kSbgw4urKvJveBnL1SrcZ8 kkOpe/wC6j7d9DVQM7vKl+U4CtFUL9ZkG+4UuHrQ3wPedYOQ37LQpbR8FEsbQmnBIHUrw8dT x6KaWr4OyJ4HKPFotI4cDHef9WbpRay6dE110tQ2Q1/uhhTScH/DpJLZ9XhLxX+y/CJNbZGj ZGO0eGPUrgTVjleaIb0UeYm/NCRfAdGNuuDb+VmA7PChP0UHTh/YatoN470cPTfPXO78Qp0T Fh20mb4GxNOdLSFvBVXjHxCx/qjnR85pDoM98u6f5C4usdmIOWXgwyBmkMvss2FEZ0ekQ8XZ MEWp1RLk3h47KX5XMTd7/6vr5YV8otpi/zF99nnK+r7q0z2HQgBCsW+v0MFbzN9fxqR8nh7W Cuo7P0RrU3jWzyH1G9ycOo+hiZ5tGi+7m2Fz5dKzQeXMQF2zaZ3VOPJWq/sL/OEEnu+UlYLp KImhWObmbvyzwV/a6SQQlddbCoozC6TWMV7azZVDljXHoSQJV7EMcR8livvtomjWcHNiVNys L7pYz43Eh6BgmI3brZfdjVsawEgf/NOrYUO7hNZfyJDxxMoStATmJwIJrnMjXYEHba4cBewe 4HJ4kozeh3GO3UM9U2LG8K0tus1FUlYKubIYq2BSq14Qqq8BLt686O/48eSFN1G+7EubFO4L mAO9x5QS6C3FheGN7h7Nc1LiOSnzfM/vOh/L0yrxtFKe99lNzNdFsYmyLu1Mgo8sZHisDGLq NxGyxxCPCNMcoupapypBjqWHsyhCXreo+CXWxHp3881Pv8inL1JY7qItQN/Ohb0F3cSv+MsR srMckEc0jPwvzeA/TY1fizpqbMVLbOkpHsQdm/jlFTBdg4Cf0pWcqxROPCXUPX+oX++A8kJS 7peq7ENBZQ9oll8T1cmrPjTrcuw0iEkyEhVNbfwllW5sPkrA3ccKqGLeohnqoi+TfJngOYnX WotcptmTx1QP7+b6dq5Jk9vQ6SCmmpmsZZ5+AarMQC3BqqlzYrBkjf7QqacFxNNP/gLSm2zq I1hjsbEg80Fd2OEseS4tUB1X5fqyxHt65XB2tyw066IUEp2K9G8JI43NknCQHy5d9Zh6Llz2 QFy07gtp6PKI9UNti+dsVabl87Kntyzn6cs8ORNEN8gjM/TlOXrOSFXJ8RIr0GOeh9xEFz7z kiVbw8KdIZP5mRzjcIFj8PHo0zvG4UOOoQlS6RgPFEzLS6bv8YzDx3iGLv33eYb73J6Bx950 CvENReHT+4uqNEvJg6w8wXQP1pPfUX0+Qy5CFzdPr0iqn3OqXOAEdG6cc3TlxrLsLngsr5/K ajvnwKlqdK6SZ10HZithma2+ybD/J3ZVFwvPYVvB797ytW51on2tVSNPrgW+bHx6DciToGUz 94LwuWbN96FPP+vf8Be55clXaerZzLUjqaefO997Pf3cc4dqS0uI9HpLzi8twhYeveULsUwH VW6lnc09Q8n2TMrNnS7+KOVOvl25k+dU7vtnUm7umPVHKdf6duVaT6Hc7A4Jr6/w91mqqtBU f3p3/B94/Bf6uhKA4VAAAA==

--SLDf9lqlvOQaIe6s--

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/