[ 
https://issues.apache.org/jira/browse/YARN-11690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17840705#comment-17840705
 ] 

ASF GitHub Bot commented on YARN-11690:
---------------------------------------

tomicooler commented on code in PR #6771:
URL: https://github.com/apache/hadoop/pull/6771#discussion_r1579096249


##########
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/container-executor.c:
##########
@@ -242,8 +242,8 @@ static int write_pid_to_cgroup_as_root(const char* 
cgroup_file, pid_t pid) {
            strerror(errno));
     rc = -1;
     goto cleanup;
-  } else if (buf.f_type != CGROUP_SUPER_MAGIC) {
-    fprintf(LOGFILE, "Pid file %s is not located on cgroup filesystem\n", 
cgroup_file);
+  } else if (buf.f_type != CGROUP_SUPER_MAGIC || buf.f_type != 
CGROUP2_SUPER_MAGIC) {

Review Comment:
   https://docs.kernel.org/admin-guide/cgroup-v2.html
   
   It should come from 
https://github.com/torvalds/linux/blob/v4.6/include/uapi/linux/magic.h#L58 
which we include, probably it is an old kernel.
   
   Could be fixed with:
   ```
   #ifndef CGROUP2_SUPER_MAGIC
   #define CGROUP2_SUPER_MAGIC 0x63677270
   #endif
   ```
   
   
   
   





> Update container executor to use CGROUP2_SUPER_MAGIC in cgroup 2 scenarios
> --------------------------------------------------------------------------
>
>                 Key: YARN-11690
>                 URL: https://issues.apache.org/jira/browse/YARN-11690
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: container-executor
>            Reporter: Benjamin Teke
>            Assignee: Benjamin Teke
>            Priority: Major
>              Labels: pull-request-available
>
> The container executor function {{write_pid_to_cgroup_as_root}} writes the 
> PID of the newly launched container to the correct cgroup.procs file. However 
> it checks if the file is mounted on a cgroup filesystem, and does that check 
> using the magic number, which differs for v1 and v2. This should handle v1 or 
> v2 filesystems as well. 
> {code:java}
> /**
>  * Write the pid of the current process to the cgroup file.
>  * cgroup_file: Path to cgroup file where pid needs to be written to.
>  */
> static int write_pid_to_cgroup_as_root(const char* cgroup_file, pid_t pid) {
>   int rc = 0;
>   uid_t user = geteuid();
>   gid_t group = getegid();
>   if (change_effective_user(0, 0) != 0) {
>     rc =  -1;
>     goto cleanup;
>   }
>   // statfs
>   struct statfs buf;
>   if (statfs(cgroup_file, &buf) == -1) {
>     fprintf(LOGFILE, "Can't statfs file %s as node manager - %s\n", 
> cgroup_file,
>            strerror(errno));
>     rc = -1;
>     goto cleanup;
>   } else if (buf.f_type != CGROUP_SUPER_MAGIC) {
>     fprintf(LOGFILE, "Pid file %s is not located on cgroup filesystem\n", 
> cgroup_file);
>     rc = -1;
>     goto cleanup;
>   }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org

Reply via email to