আমি বিলম্ব দেখতে পাচ্ছি FAT- এ একটি ক্ষুদ্র-ক্ষমতার FAT (FAT12) - ফর্ম্যাটযুক্ত ইউএসবি ফ্ল্যাশ ড্রাইভে যদিও ড্রাইভের নীতিটি "দ্রুত অপসারণ" তে সেট করা আছে। (আমি বিশ্বাস করি SurpriseRemovalOK
এটির পতাকাটি সেট করা হয়েছে)। আমি ইউএসবি-র মাধ্যমে ড্রাইভে প্রেরিত এসসিএসআই কমান্ডগুলি ক্যাপচার করেছি: ফাইল ট্রানসেশন লেখার সাথে সাথে ঘটবে, পুরো ফাইলটি (2 512-বাইট সেক্টর দীর্ঘ) এর পরপরই লেখা হয়, তবে তারপরে FAT এর আগে একটি 20-90 দ্বিতীয় বিলম্ব রয়েছে ফাইল রাইটিং প্রতিফলিত আপডেট করা হয়।
ড্রাইভের আকারটি উল্লেখযোগ্য। আমি 15MB এবং আরও ছোট আকারের FAT ফাইল সিস্টেমে পরীক্ষা করে দেখেছি। 16 এমবি এবং তার উপরে, লেখাগুলি বিলম্বিত নয়। আমি উইন্ডোতে যখন কোনও ড্রাইভ ফর্ম্যাট করি তখন FAT12 এবং FAT16 ব্যবহারের মধ্যে আমি দেখতে পাই এমন ব্রেকআপপয়েন্ট M (নোট পরে যুক্ত করা হয়েছে: তবে FAT12 / FAT16 ব্রেকপয়েন্টটি ক্লাস্টারের সংখ্যার উপর নির্ভরশীল, পরম ফাইল সিস্টেমের আকার নয়)।
16 এমবি এবং আরও বড়তে, উইন্ডোজ Prevent/Allow Medium Removal
লেখার আগে এসসিএসআই কমান্ডগুলি প্রেরণ করে, ডিভাইসটি অপসারণ না করার জন্য জিজ্ঞাসা করে। ইউএসবি স্টিকটি আসলে এই অনুরোধগুলিতে ব্যর্থতা ফিরিয়ে দেয় (কারণ এটি কোনও অপসারণের গ্যারান্টি দিতে পারে না), তবে উইন্ডোজ যাইহোক চেষ্টা করে। 15MB এবং আরও ছোট ট্রেস কোনও Prevent/Allow Medium Removal
আদেশ দেয় না।
(পাইথন কোড সম্বলিত একটি ক্ষুদ্র FAT ফাইল সিস্টেম সমর্থন করে এমন একটি মাইক্রোকন্ট্রোলার বোর্ড ব্যবহার করার সময় আমি এই সমস্যাটি আবিষ্কার করেছি mic । তবে মাইক্রোকন্ট্রোলারটি বিলম্বিত লেখার কারণে দূষিত কোড বা দূষিত ফাইল সিস্টেমটি দেখছিল))
"দ্রুত অপসারণ" সেট করা সত্ত্বেও এফএটি-তে লেখাটি এত দিন কেন বিলম্ব হচ্ছে? আমি ড্রাইভে একটি "ইজেক্ট" করে লেখকদের জোর করতে পারি তবে এটি "দ্রুত অপসারণ" এর প্রতিশ্রুতি পরাস্ত করে। আমি যদি ড্রাইভটি তাড়াতাড়ি টানতে থাকি তবে এতে একটি ভুল FAT টেবিল থাকবে। এটি "নিরাপদে হার্ডওয়্যার অপসারণ" ব্যবহার না করার বিষয়ে নীচের স্ক্রিন শটে বিবৃতিটিকে অন্তর্ভুক্ত করে। এটি কি বাগ বা আমি কিছু মিস করছি? ম্যানুয়াল "ইজেক্ট" না করে সমস্ত লেখককে তাত্ক্ষণিকভাবে ঘটতে বাধ্য করার কোনও উপায় আছে কি?
সমস্যাটি দেখানো একটি ওয়্যারশার্ক / ইউএসবিপিপ্যাপ ট্রেস থেকে ছাঁটাই এক্সট্রাক্ট এখানে। আমি একটি বিদ্যমান ফাইল ছাঁটাই এবং তারপরে এটির একটি নতুন অনুলিপি লিখি। আমি মন্তব্য যুক্ত করেছি ###
। ইউএসবি ড্রাইভে বেশিরভাগ লেখাগুলি ট্রেসটিতে প্রায় 5 সেকেন্ড সময় নেয়, তবে চূড়ান্ত FAT লেখাটি 26 সেকেন্ড পর্যন্ত হয় না।
No. Time Source Destination Protocol Length Info
### write directory entry to truncate file
13 5.225586 host 1.2.2 USBMS 58 SCSI: Write(10) LUN: 0x00 (LBA: 0x00000041, Len: 8)
14 5.225838 host 1.2.2 USB 4123 URB_BULK out
### write FAT entries to truncate file
16 5.230488 host 1.2.2 USBMS 58 SCSI: Write(10) LUN: 0x00 (LBA: 0x0000003b, Len: 1)
17 5.230707 host 1.2.2 USB 539 URB_BULK out
19 5.235110 host 1.2.2 USBMS 58 SCSI: Write(10) LUN: 0x00 (LBA: 0x0000003e, Len: 1)
20 5.235329 host 1.2.2 USB 539 URB_BULK out
### write directory entry for
22 5.252672 host 1.2.2 USBMS 58 SCSI: Write(10) LUN: 0x00 (LBA: 0x00000041, Len: 8)
23 5.252825 host 1.2.2 USB 4123 URB_BULK out
### write out file data (2 sectors of 512 bytes)
25 5.257416 host 1.2.2 USBMS 58 SCSI: Write(10) LUN: 0x00 (LBA: 0x000000c1, Len: 2)
26 5.257572 host 1.2.2 USB 1051 URB_BULK out
### 20 second delay
### finally, write FAT entries to indicate used sectors
79 26.559964 host 1.2.2 USBMS 58 SCSI: Write(10) LUN: 0x00 (LBA: 0x0000003b, Len: 1)
80 26.560191 host 1.2.2 USB 539 URB_BULK out
82 26.560834 host 1.2.2 USBMS 58 SCSI: Write(10) LUN: 0x00 (LBA: 0x0000003e, Len: 1)
83 26.560936 host 1.2.2 USB 539 URB_BULK out
আমি নিয়মিত ফ্ল্যাশ ড্রাইভ ব্যবহার করে এবং একটি মাইক্রোকন্ট্রোলার বোর্ডের সাহায্যে উইন্ডোজ 7 এবং উইন্ডোজ 10 উভয়ই একটি ছোট্ট ইউএসবি এমএসসি ড্রাইভ অনুকরণ করে এর মতো ট্রেস তৈরি করেছি।
কেবল স্পষ্ট করে বলতে গেলে, এটি একটি FAT12- ফর্ম্যাটযুক্ত ড্রাইভ, যা উইন্ডোজ ফর্ম্যাটিং সরঞ্জামটিতে "FAT" নামে পরিচিত।
main.py
বা অনুরূপ ফাইলগুলি সেট আপ করা হয় যখন ফাইলটি সনাক্ত করা হয় তা আবিষ্কার করা হয়। এটি লেখার সম্পূর্ণ হতে কিছুটা বিলম্ব করে, তবে দশক সেকেন্ড নয়। আমরা এই স্বতঃ-পুনঃসূচনাটি অক্ষম করতে পারি, তবে লেখার সময়মত কোনওভাবে সম্পূর্ণ হয়েছে তা নিশ্চিত করার জন্য ড্রাইভটি "ইজেক্ট" করা এখনও প্রয়োজনীয়। ব্যবহারকারীকে একটি ইজেক্ট করার প্রয়োজন হয় একটি উপদ্রব; আমরা এড়াতে চাই।