<div dir="ltr"><span id="gmail-docs-internal-guid-9f000837-7fff-75c5-c7e8-309cf78a91ad"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline;white-space:pre-wrap"><br></span></p><p style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline;white-space:pre-wrap"><font size="4">Windl Ulrich rebutted:</font></span></p><p style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline;white-space:pre-wrap"><font size="4"><span style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;white-space:normal">Actually I don't quite get it:</span><br style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;white-space:normal"><span style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;white-space:normal">If some process is inside $HOME, $HOME shouldn't be unmounted (i-node busy, or so).</span><br style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;white-space:normal"><span style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;white-space:normal">But when there is no process inside $HOME (and no other fd opened on it), when not allowing to unmount $HOME?</span><br style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;white-space:normal"><span style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;white-space:normal">Where does opening an extra fd on $HOME help?</span></font><span style="font-size:11pt"><br></span></span></p><p style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline;white-space:pre-wrap"><span style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;white-space:normal"><br></span></span></p><p style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="color:rgb(0,0,0);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline;white-space:pre-wrap"><font face="garamond, times new roman, serif" style="" size="4">Benjamin Godfrey replied:</font></span></p><p style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="color:rgb(0,0,0);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline;white-space:pre-wrap"><font face="garamond, times new roman, serif" size="4"><br></font></span></p><p style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="color:rgb(0,0,0);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline;white-space:pre-wrap"><font face="garamond, times new roman, serif" size="4"><br class="gmail-Apple-interchange-newline"><span style="color:rgb(31,31,31)">Perhaps, I don't understand your objection.  Maybe, you are concerned about a scenario wherein the situation below is true, i.e. there is an open fd in the $HOME directory keeping the directory open for an active process, and another fd is added by yet another process, stalling the unmount.  </span><br></font></span></p><p style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><font face="garamond, times new roman, serif" size="4"><br></font></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="color:rgb(0,0,0);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline;white-space:pre-wrap"><font face="garamond, times new roman, serif" size="4">The file descriptor is used as a signal to systemd-login to stay mounted.  For example, User Ulrich is running a media player and/or a text editor inside the home directory, and let’s say Ulrich’s system is also collecting data from another server about an unexplained atmospheric phenomenon (UAP) that needs to be processed on Ulrich’s computer because it has the fastest processing time.  This UAP data is collected via an automated process.   In this condition, the computer would keep an fd inside the $HOME directory to make sure that the home directory stays mounted.   </font></span></p><font face="garamond, times new roman, serif" size="4"><br></font><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="color:rgb(0,0,0);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline;white-space:pre-wrap"><font face="garamond, times new roman, serif" size="4">Ulrich forgets he has important UAP data coming in, and he notices his system is running a little slow.  Ulrich takes a break, turning off his music, saving his work from the text editor, and logs out.   Here, you don’t want your system to unmount until after the UAP data is finished, so it’s good to have an open fd in the $HOME directory.  (Hopefully, when the UAP data process is finished it closes the fd.)  Once systemd-login spots that the file descriptor is closed, then it can unmount the home directory.  </font></span></p><font face="garamond, times new roman, serif" size="4"><br></font><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><font face="garamond, times new roman, serif" size="4"><span style="color:rgb(0,0,0);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline;white-space:pre-wrap">You don’t want signal interruptions that could cause data to be lost or delayed, and: </span><span style="color:rgb(31,31,31);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline;white-space:pre-wrap">it is generally a good idea to keep an open fd in a user's home directory, even if there are no processes currently accessing it. This will help to prevent problems if a process needs access to the home directory in the future.</span></font></p><br></span><br class="gmail-Apple-interchange-newline"></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, May 24, 2023 at 11:44 PM Windl, Ulrich <<a href="mailto:u.windl@ukr.de">u.windl@ukr.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Actually I don't quite get it:<br>
If some process is inside $HOME, $HOME shouldn't be unmounted (i-node busy, or so).<br>
But when there is no process inside $HOME (and no other fd opened on it), when not allowing to unmount $HOME?<br>
Where does opening an extra fd on $HOME help?<br>
<br>
-----Original Message-----<br>
From: systemd-devel <<a href="mailto:systemd-devel-bounces@lists.freedesktop.org" target="_blank">systemd-devel-bounces@lists.freedesktop.org</a>> On Behalf Of Benjamin Godfrey<br>
Sent: Friday, May 19, 2023 4:59 PM<br>
To: <a href="mailto:systemd-devel@lists.freedesktop.org" target="_blank">systemd-devel@lists.freedesktop.org</a><br>
Subject: [EXT] Re: [systemd-devel] Why does stopping mount units kill user sessions?<br>
<br>
Lennart Poettering, wrote:<br>
<br>
<br>
 I think we probably should change systemd-logind to<br>
implicitly and unconditionally keep an open fd to the home dir of a<br>
user around as long as there's at least one session of them around,<br>
simply to make clear that sessions keep home dirs busy. This, as side<br>
effect would then also mean that autofs wouldn#t be tempted to<br>
consider the home dir idle as long as there's a session.<br>
<br>
<br>
<br>
Benjamin Godfrey's reply:<br>
<br>
<br>
That seems like a good idea.  This can be done simply by modifying the logind_handle_homedir_umount function to:<br>
<br>
C<br>
static void<br>
logind_handle_homedir_umount(struct logind_client *client,<br>
                              const char *homedir)###  The function takes two arguments client and homedir. client points to a struct loginid_client object###  and homedir is a string that points to the users homedir.  {<br>
    struct logind_session *session;<br>
    bool active_sessions = false;  ###  This sets the variable to false by default<br>
<br>
    session = logind_client_find_session_by_homedir(client, homedir);<br>
    if (session) {<br>
        active_sessions = true;  ### There is an active session <br>
    }<br>
<br>
    if (active_sessions) {<br>
        return;                  ###  A session is active, don't shut down.   <br>
    }<br>
<br>
    logind_session_kill(session); ###  Shut it down because there is no active session by default.  <br>
}<br>
</blockquote></div>