From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932314AbcDDRkS (ORCPT ); Mon, 4 Apr 2016 13:40:18 -0400 Received: from mail-by2on0131.outbound.protection.outlook.com ([207.46.100.131]:51520 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754156AbcDDRkQ (ORCPT ); Mon, 4 Apr 2016 13:40:16 -0400 Authentication-Results: ou.edu; dkim=none (message not signed) header.d=none;ou.edu; dmarc=none action=none header.from=ou.edu; To: From: Steve Kenton Subject: /sys inconsistent newline requirement on write Message-ID: <57029F29.2070905@ou.edu> Date: Mon, 4 Apr 2016 11:06:49 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [68.97.3.132] X-ClientProxiedBy: BY2PR03CA040.namprd03.prod.outlook.com (10.141.249.13) To BY2PR03MB109.namprd03.prod.outlook.com (10.242.36.13) X-MS-Office365-Filtering-Correlation-Id: b1fa7027-2791-4b78-0d4e-08d35cab865c X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB109;2:7uBo/xkeq48q2XXvb/feLqY91GtbTvg1yMMqTpS5Ssvl7AIPXagoZ50qrmXUzoSYmWanuMme1ynuQxSWmuQ+IjSnsC7C2P5aBT+QNrMGXvQ9YQXp/7VFi+fyGHj/p4pUJS0dEMAA49S73Er0lF/xGLnSS0VcaecdxQ/ZciZkt8O6A28AmiTMnBrtP6Irv1f/;3:NwnbsvzVWiBXAHBDX2/n5k1ihcsxFPGFqb7OMVOEG5FvmZcTP6zJJoOruu3zQws7I5H2RV9r0CKJEUk0zZ3lBuFdnxMODRvgx1lPpxlT0fwF38LQ2Cxc57BEj8zb4KwM;25:kctuv3BqtLcSTIchOIE7I1t3dnLneGLXBag7t4e9p8UfAjCS5GJEOU5ONNOFlID5JHlT9rx8oGTiXqcsys0FC0DDJqDrzYn49czO5ELvgtWvwFRr1xcDhfFOzyzEH59/jITl/92kBM+FPr6JQOgTw6LFN5fJknoTpo3/qMzSq2ipcY58+wq1dqujkY2F/eE6JtRF4rinl27+jAZu/kV4bllpPpEDpOMjBbfyTxdXTb7vrcDupIMXzfPEMYERQ9EeWHk2gcDGHU1ICTN+smXmKU5MruPP6To/AT/PX9vSN7ki3NnVYJlehxkKcSV++q8+rX5n+gLXfg54c+y8prN+nqV0WR/DsgOMar6CvEOH14dKqxSnQDn8YrYh8OZxk9rO+vok6rvZ8UqpKvHTfMMQYEer5IA5EQr7fMK8H1W3XkITlh3PdOLPyk4j9dD3wgjTeHGqpHOaYE2dR82wrjAtA3P1uo/jT6Y28EKq0j71w4NjIC23Uu0cWX7UKCQcjduzzRHhab8gqp2+6rAP225IvjRrptu6b5TDYUB5fcMZczP3J2jyUVGFud+MmbzPbLWpUTrzRcZSLBCKXCcCGFib7g== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB109; X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB109;20:TddPE/TQMVz8vBN/hhlVhrdxPcCRZnYGyqWFOcebL8EoXwR71ovH/b4NjsGRkCnPWQqMrZXPmDZWgxcCrvfolr5hsWrza9bORKc19jT7tCxUE7/Q2QYAeF7rNCZz99sGGcrehi2zTZ1MQ/zsEnU/y6kCgX1kahW6IpkKJAfrZ3fVu2aLeCGAwY0jM/BVPL+/KuF/zw0Zk9ZeelR5mAMPTkXtLNyuzJ50wgPMKWkGDOixoCg7zGytbDISHaTgy1Vmdyt1Or3fc5AUStVJh4OeelV1P7M7nw5dHgQ04kPnoAqYqUXYsUPG3hmkSy85iNMBtfXbSE85YOzsb75YaPNl55vlh5KrXQZ/WXXTbiHY6H4zsQNGfwcvU0HLG6rVhC7BOaMN0CecIRRSqoO8i8Z8lr4KJ3xuYK/0l0XsDexsYCRztFzrQfiQvSWlKeKxo0b/wjEjmE3OwtZXIOcRGosFpluHQL7SAJ6PC2OI4WcRBZ8qzJ+ReJHfeDH1uOaUj6pC;4:td+auoFAHb2/KSuVuP03Ec4PaNUhtb6az9gVyGoZoyWUoIlzKcbUhH1B5LnUWcfgd0m+ZrC45ea2YQnN4Lm80/mXAkqXqPPr42ThcjbWGYn/wXQvBCFGXzMu+XebnmW31ST+gW85rv8EauBTg5XF/A25omKPAdMtM1+z5+bY2TY5+HeqLirRwxDHfiUFhD5oNKaer7v2RNdsxlMQXpBBSZQA+aicXZ/NRDKWHcgO2A8thoR9mFEeg14U7Ylox05DScR5K9MUCPZ8bSUKVKiFJqMKu97LkDjTw3qJnnSz4KuuPmlr28GMBB1QPfEMoFkpmY2KhwNIgngneSXy0sy17LjF18YUwROP2v0Ck5UMSwdJa2gyqJRtlxQF4CnfH/sl X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046);SRVR:BY2PR03MB109;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB109; X-Forefront-PRVS: 0902222726 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(77096005)(2351001)(229853001)(89122001)(42186005)(117156001)(189998001)(33656002)(59896002)(1096002)(107886002)(64126003)(47776003)(86362001)(66066001)(83506001)(110136002)(4001350100001)(65956001)(36756003)(50986999)(54356999)(87266999)(99136001)(80316001)(75432002)(50466002)(6116002)(450100001)(81166005)(586003)(5004730100002)(92566002)(65806001)(23676002)(88552002)(3846002)(230700001)(2906002)(5008740100001)(90282001);DIR:OUT;SFP:1102;SCL:1;SRVR:BY2PR03MB109;H:[192.168.1.2];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCWTJQUjAzTUIxMDk7MjM6dm5oMElkWW0yakxyTEk5SFU2Y00xbVpzekxG?= =?utf-8?B?Vk45blNENmUvcCtwYm44Tjk3V0hnSmJuRDhadlhIM1Q2YmM5cGRCQzZINzlj?= =?utf-8?B?Wmp0ampVZWo3NFhLQUk5bFhXVTFTQ0JRVlZzZDVlYkFkd1k5TTg4amJJVnc0?= =?utf-8?B?c3dUYUpndjJGSndiUnEzWTVaeWlLRVNrVHkvZzNESXdSeDcrL24rbEhCdkJH?= =?utf-8?B?ZVZNMTVtNldUNEVKd01RbDA2Q2NTTjBob2dFc2lwUm5PeU5PdzdsQU4wQXNV?= =?utf-8?B?VFBDSk5QOVJMNlc0ZExrNHNldjBINC9jcHdpRGtBcTJqQ01RSFc3YnczV2hM?= =?utf-8?B?YU01TkE0WVJtZmtPb0t4K001VzdXS1dpS0FRcmh2R2FFWnAxakRFUHVSczBI?= =?utf-8?B?WjY0MWFEckRKb0d3eTVKaStKY2Uwa2k0SlIwZlBKc3dNNFpMaFFwUkxCQkRY?= =?utf-8?B?djdkN1dNVHJLS2U5NExFTHJ6OTQ5bmZKM2MzTk96NDhZV0ZMWmtyckdXa3Ro?= =?utf-8?B?QUQvSFk4cW5iSnRQM0VqSEIzVWRQVUJCN2NyKy9aSlFUVVQ3TnVqZEd4OERN?= =?utf-8?B?V0lOaitCeFZ4Z05nTnpsdlFEWm93Z04wR2Y0czRBSnlXb25sdnZscGduekd1?= =?utf-8?B?REM4S2FmajN1Zk9yck01amRQaHV0STJZelJNUTdkSVhaekgwZU1nbmFuTkpJ?= =?utf-8?B?amZKZm5TWGUxaVZCMkVqNDFiN1J6a0hLY1hFcXBNY1pNa0pZMExlR1hYRkxY?= =?utf-8?B?Sng1UnpsWlV1dXdhd21nZkNudmpMY08xUnBzOXk0MGFjM0cyc3EvL1RXZWtH?= =?utf-8?B?bk9HU0p0ajRIQW1VUnArSklVSWtLUzRJdUZzNGE4dWtUVEF1Y2VGd2hkcFNq?= =?utf-8?B?eWlaU0ZwclgrTlo4ZXVpNU42dlRVRDlxVjkxam9sRURzNjgxekJhMzlYZGFq?= =?utf-8?B?VjlRc3FsUFlkeWhrSXBXUnh0Wlc1cTJnUlk5THdxU0xYZTZiLzlpczY0VDBN?= =?utf-8?B?cFh3aHFDY3RoYk9INFhUellxQXBPdHdYTkFCblRETm9tanZMaG5ka0VzY1k0?= =?utf-8?B?T2pQdytDUHFIR1RHczRRLzlXek5lVnk1RXB4S3huc3E2U1hBNWt5TkZVcW5Q?= =?utf-8?B?RTQzdVpFYnBUemRxKzBBUHYyVDc1WEtDZUdaNk95TWRtYlFkU3MvQVh1Tmda?= =?utf-8?B?b3Jyd2E3TFFuNFdSUitjbnZmNUhWT0RDVkloSVdjelBpKzQvRlpCNk1mR0g1?= =?utf-8?B?MzdKK2pxWXdzWkN6V204OGVJR2pDU2wraVN5RW91MUtJSVl5RlBBYWRnRzJZ?= =?utf-8?B?b3BCVm84REtkaHlSa2w3WUtBeEV0Vyt2OUVmd01yRG94dExoYWVrRnJVek43?= =?utf-8?B?M0h0VTgyYnM3TGdFY0UwcENxY0RFa2NQeUl5S0VXK1ZTL21CcHo5MzdpdGpr?= =?utf-8?B?TXB1QkJ5bWUza25rbWpuTUV5d1FJY2ZCWnRPN2JkSzEyS3JKQVYvbGw3Q1Qx?= =?utf-8?Q?0TpaRagOlEqRd+R3oz3cN3OWR4qAGuC1ZJ1Tu4e5SxI+3?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB109;5:7240h8y5wtBEw19lAmFSGtITEATiCWLrgZ7xdkGDkQrwKLdc3QS5fRYzkYv9HMDNtN4ks/Ykscm+nGL9wavjD8wpTp301UtJXmkVNbafum7+Z+He8aPeJNVEXKzCVHeUwlRGJMLRBVuBlFnTuqQVMA==;24:pJsReCpuRHqs1klmlb+LCdb6dXIqY9MIfc9VldwQ9X9vqunZ2Qil1SvbGXntLFibLXBx05fZuZwEqXhkurUn7rz5enGLYRrxrLCDhZKkl9E= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ou.edu X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Apr 2016 17:06:55.0062 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB109 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Feature or bug? Using shell echo to write to /sys files normally adds an implicit newline but write() in a C program must add it explicitly. Some but not all /sys files require a newline or the write fails. 'Extra' new lines from echo are silently ignored and do not cause errors. For example: writing "1" to /sys/block/sd*/device/delete does not require a trailing newline writing "offline" to /sys/block/sd*/device/state does require a trailing newline $ make test $ sudo ./test write failed without newline: Invalid argument =================================================== // Test program to illustrate required newline for writes to /sys/block/sd*/device/state #include #include int main(int argc, char **argv) { int sysfd; if ((sysfd = open("/sys/block/sdb/device/state", O_WRONLY)) < 0) perror("open failed"); else { if (write(sysfd, "offline", 7) < 0) perror("write failed without newline"); if (write(sysfd, "offline\n", 8) < 0) perror("write failed with newline"); if (close(sysfd)) perror("close failed"); } return 0; }